A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付付付付付 初级黑马   /  2018-5-21 15:26  /  528 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 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/c3p0
1.导包
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:定时刷新


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马