本帖最后由 小石姐姐 于 2018-5-23 15:50 编辑
jdbc---Tomcat
JDBCJDBC入门
准备表:
create database web_test3;
user web_test3;
create table user(
id int primary key auto_incremant,
username varchar(20),
password varcahr(20),
);
JDBC流程:
导入jar包 ==> 奶一口 ==> 使用
JDBC开发步骤:
1.加载驱动
Class.forname("com.mysql.jdbc.Driver");
2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql//localhost:8848/web_test3","root","root");
3.基本操作(执行sql语句)
//获得执行sql语句的对象
Statement statement = conn.createStatement();
//编写sql语句
String sql = "";
//执行sql语句获得结果集
0
ResultSel rs = statement.executeQuery(sql);
//遍历
where(re.next()){
System.out.print(rs.getInt("id"));
System.out.print(rs.getString("username"));
}
4.释放内存
rs.close();
statement.close();
conn.close();
-*JDBC开发流程
step1:注册驱动:Class.forName()
step2:获得连接:Connection conn = DriverManger.getConnection(url,username,password)// Connection java.sql包下的
step3:编写SQL语句,String sql ="",以前的值的地方用占位符代替 ?就是占位符
step4:预编译sql并且获得可执行sql语句的对象PreparedStatement ps = conn.prepareStatemet(String sql)
step5:为sql语句设置值,用值代替sql语句中的? ps.setXXX(int n,值) n:代表第几个问号的意思,n从1开始
step6:执行sql语句
如果是查询:ResutSet rs = ps.executeQuery();
遍历结果集:
while(rs.next()){
rs.getXXX(String columnName)/rs.getObject(String columnName) ;
//columnName默认是表地段名,如果取了别名,用别名
}
如果是增删改:int num = ps.executeUpdate() ;// num 代表影响的行数
step7:释放资源工具类的抽取:Properties对象的使用
Properties prop = new Properties();
prop.load(new FileInputStream(String path));
prop.getProperty(String key)
属性文件:.properties
key=value
aaa=adfadf
bbb=dafda背后的思想:程序的解耦和 JDBC的事务管理事务的管理的对象:Connection conn 事务管理的核心的思想:逻辑上的一组操作使用的是同一个Connection对象 事务管理的核心步骤:开启事务:conn.setAutoCommit(false) 业务逻辑的操作 所有的业务逻辑操作都成功后提交事务:conn.commit() 一旦有异常回滚事务:conn.rollback() 连接池druid/c3p01.导包 2.配置文件:在classpath下默认有个一个文件叫 c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///web_test4</property>
<property name="user">root</property>
<property name="password">tsmysql</property>
<property name="initialPoolSize">5</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
</c3p0-config>3.java程序代码
ComboPooledDataSource dataSource = new ComboPooledDataSource();DBUTILS(web阶段使用)增删改
QueryRunner qr = new QueryRunner(DataSource dataSource)
qr.update(String sql,Object ... obj)查询
QueryRunner qr = new QueryRunner(DataSource dataSource)
qr.query(String sql,各种Handler,Object...obj)
结果集类型:
BeanHandler
BeanListHandler
MapHandler
MapListHandler
ScalarHandler:Long
XML解析:DOM4j+Xpath
SAXReader sr = new SAXReader()
Document document = sr.read("代表这个xml文档的流");
List<Node> list = document.selectNodes(String xpathExpression)
Node node = document.selectSignalNode(String xpathExpression)
xpathExpression:
//元素名称
//元素名称[@属性名称]
//元素名称[@属性名称='属性值']
tomcat部署1.如果要用虚拟路径: tomcat\conf\Catalina\localhost:新建一个xxx.xml ,写 <Context docBase=""/> 访问路径:xxx 2.将项目导出成war包,直接扔到webapps下 协议请求请求行|请求头|请求体 1.get/post的区别: get提交的参数显示到地址栏,在请求行中地址后面;post提交的参数在请求体中 get有大小的限制,post没有 get没有请求体,post有 2.常见的请求头: User-agent:浏览器的类型 Referer:防盗链 响应响应行|响应头|响应体 1.常见的状态码: 302:重定向(结合Location响应头使用) 304:查找本地缓存 404:路径错误,资源真的不存在 500:代码写错了 2.常见的响应头: Location:结合302做重定向 Content-Disposition:文件下载的时候用 Refresh:定时刷新
|