首页技术文章正文

数据库连接池、Spring JDBC和HTML

更新时间:2018-09-06 来源:黑马程序员技术社区 浏览量:

一、JDBC简介
概念:Java DataBase Connectivity,Java数据库连接,Java语言操作数据库.
JDBC本质:其实是Sun公司提供的一套操作所有关系型数据库的规则,即接口.各个数据库厂商去实现这套接口,提供数据库驱动jar包.我们可以使用这套接口实现JDBC编程,操作数据库.
JDBC操作数据库步骤:
    *导入jar包
    *注册驱动
    *建立连接
    *书写sql语句
    *创建执行sql语句的对象(Statement/prepareStatement)
    *执行sql语句
    *处理返回结果
    *释放资源
注意:由于后期使用单纯JDBC比较少,因此这里就不在赘述其具体代码和工具类的编写了。后面会介绍一些新的技术。
二、JDBC控制事务
1.事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败。
        2.操作:
                1.开启事务
                2.提交事务
                3.回滚事务
        3.使用Connection对象来管理事务
                *开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
                        *在执行sql之前开启事务
                *提交事务:commit() 
                        *当所有sql都执行完提交事务
                *回滚事务:rollback() 
                        *在catch中回滚事务
三、数据库连接池

概念:是一个容器(集合),存放数据库连接的容器。
          当系统初始化后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
好处:
        1.节约资源
        2.用户访问高效
实现:
        1.标准接口:DataSource,java.sql包下的
1.方法:
        *获取连接:getConnection()
        *归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而 是归还连接
2.一般我们不去实现它,有数据库厂商来实现
                        1.C3P0:数据库连接池技术
                        2.Druid:数据库连接池实现技术,由阿里巴巴提供的
这里重点介绍下Druid。
四、Druid:数据库连接池实现技术
1.步骤:
                        1.导入jar包druid-1.0.9.jar
                        2.定义配置文件:
                                *是properties形式的
                                *可以叫任意名称,可以放在任意目录下
                        3.加载配置文件。Properties
                        4.获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
                        5.获取连接:getConnection

五、Spring JDBC
1. 概念: Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发。
        步骤:
            1.导入jar包
            2.创建JdbcTemplate对象,依赖于数据源DataSource
            3.调用JdbcTemplate的方法来完成CRUD的操作
                 update():执行DML的增删改操作
                 queryForMap(): 将查询的结果集封装为Map双列集合对象,每次只能查询出一条记录
                 queryForList():将查询的结果集封装为List单列集合对象
                       注意:将每一条记录封装为map集合,将map集合封装为list集合
                 query():将查询结果封装为JavaBean对象 (实体类对象)        
                                               query的参数:RowMapper
                                        一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
                                        new BeanPropertyRowMapper<类型>(类型.class)
                 queryForObject():将查询结果封装为Object对象
                                      一般用于聚合函数的查询

六、HTML(简单介绍)
1.基本的一些标签
     1)介绍HTML之前,先介绍下JavaWeb技术:
概念:用于java语言开发基于互联网的项目.
软件架构:
  C/S:Client/Server 客户端/服务器端
        如:QQ/迅雷等
        优点:用户体验好
        缺点:开发/安装/部署/维护,麻烦
  B/S:Browser/Server 浏览器/服务器端
         通过网址,访问不同的程序
         优点::开发/安装/部署/维护 比较简单
         缺点:大型应用,用户体验较差,因为传输比较慢,硬件要求过高
B/S架构详解:
    资源分类:
            静态资源:基于HTML/JS/CSS等技术,使用静态网页开发技术发布的资源.
              Html超文本标记语言:Hyper text  Markiplanguage简称
             
                                               特点:
                                        所有用户访问,得到的结果是一样的。
                                        如:文本,图片,音频、视频,HTML,CSS,JavaScript
                                        如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器。浏览器中内置了静态资源的解析引擎,
                                                         可以展示静态资源
            动态资源:基于Servlet/JSP等技术,使用动态网页及时发布的资源.
                                               特点:
                                        所有用户访问,得到的结果可能不一样。
                                        如:jsp/servlet,php,asp...
                                        *如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器
注意: 我们要学习动态资源,必须先学习静态资源!
                静态资源:
                        HTML:用于搭建基础网页,展示页面的内容
                        CSS:用于美化页面,布局页面
                        JavaScript:控制页面的元素,让页面有一些动态的效果
       2)HTML和其基本标签
1.概念:是最基础的网页开发语言
                Hyper Text Markup Language超文本标记语言
                        超文本:
                                超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本.
                        标记语言:
                                由标签构成的语言。<标签名称> 如html,xml
                                标记语言不是编程语言
2.快速入门:
                语法:
                        1.html文档后缀名 .html 或者.htm
                        2.标签分为
                                1.围堵标签:有开始标签和结束标签。如 <html></html>
                                2.自闭和标签:开始标签和结束标签在一起。如 <br/>
                                            3.标签可以嵌套:
                                需要正确嵌套,不能你中有我,我中有你
                                错误:<a><b></a></b>
                                正确:<a><b></b></a>
                                             4. 在开始标签中可以定义属性。属性是由键值对构成,值需要用引号(单双都可)引起来
                                             5. html的标签不区分大小写,但是建议使用小写。
HTML标签:表单标签
        *表单:
             *概念:用于采集
             *form标签:用于定义表单的.可以定义一个范围,范围代表采集用户数据的范围.
          *属性:
             *action:指定提交数据的URL
             *method:指定提交方式
                      *分类:一共7种,常用2种:
                get:
                     请求参数会在地址栏中显示,会封装到请求行中
                     请求参数大小有限制的
                     不太安全
        post:
                     请求参数不会在地址栏中显示
                     请求参数大小没有限制的
                      较为安全
       表单项中的数据要想被提交:必须指定其name属性.
表单项标签:
           *input:可以通过type属性值,改变元素展示样式
  *type属性:
         text:文本输入框,默认值
              placehoder:指定输入框的提示信息,当输入的内容发生变化,会
         password:密码输入框,
         radio:单选框
                           *注意:
                        1.要想让多个单选框实现单选的效果,则多个单选框的name属性值必须一样。
                        2.一般会给每一个单选框提供value属性,指定其被选中后提交的值
                        3.checked属性,可以指定默认值

        checkbox:复选框
                          *注意:
                        1.一般会给每一个单选框提供value属性,指定其被选中后提交的值
                        2.checked属性,可以指定默认值

         file: 文件选择框(文件上传)
         hidden:隐藏域,用于提交一些信息
         submit:提交按钮,可以提交表单
         button:普通按钮
         image:图片提交按钮
                      *src属性指定图片的路径

         color:取色器
         date:年月日的日历
         datetime-local:年月日时分秒
         email:邮箱
         number:数字,如年龄等
*label:指定输入项的文字描述信息
                       *注意:
                        * label的for属性一般会和 input 的 id属性值 对应。如果对应了,则点击label区域,会让input输入框获取焦点。

* select属性 :下拉列表,设置name属性
              <option></option>指定列表项
*  textarea属性:文本域.
                                            *cols:指定列数,每一行有多少个字符
                                *rows:默认多少行


CSS:页面美化布局控制
1. 概念:Cascading Style Sheets层叠样式表
                *层叠:多个样式可以作用在同一个html的元素上,同时生效
2.好处:
                1.功能强大
                2.将内容展示和样式控制分离
                        *降低耦合度。解耦
                        *让分工协作更容易
                        *提高开发效率
        
3.CSS的使用:CSS与html结合方式
                   1.内联样式
                                  *在标签内使用style属性指定css代码
                        * 如:<div style="color:red;">hello css</div>
                   2.内部样式
                                  *在head标签内,定义style标签,style标签的标签体内容就是css代码
                        *如:
                                <style>
                               div{
                                   color:blue;
                               }
                        
                           </style>
                                <div>hellocss</div>

                   3.外部样式
                       1.定义css资源文件。
                       2.在head标签内,定义link标签,引入外部的资源文件
                         *如:
                           *a.css文件:
                                        div{
                                            color:green;
                                        }
                                <linkrel="stylesheet" href="css/a.css">
                                <div>hellocss</div>
                                <div>hellocss</div>
                      *注意:
                        *1,2,3种方式css作用范围越来越大
                        *1方式不常用,后期常用2,3
                        *3种格式可以写为:
                                <style>
                                @import"css/a.css";
                            </style>

总结:
html中三种写css的方式:
   1.直接在标签上写style属性
   2.在head标签中直接写<style>....</style>
   3.在外部定义.css文件,通过<link rel=  />引入外部样式
优先级就近原则,即1>2>3
css语法:
格式:
选择器{
属性名1:值;
属性名2:值;
......
}
*选择器:筛选具有相似特征的元素
                *注意:
                        *每一对属性需要使用;隔开,最后一对属性可以不加;
分类:
基础选择器:
   1.id选择器:选择具体的id属性值元素
            *语法:#id属性值{}
   2.元素选择器:选择具有相同标签名称的元素
            *语法:标签名称{}
            *注意:id选择器优先级高于元素选择器
   3.类选择器:选择具有相同的class属性值的元素
            *语法:.class属性值{}
            *注意:类选择器优先级高于元素选择器
            *class=class属性值1  class属性值2   class属性值3...也是可以的,只是相同设置只有一个起作用
扩展选择器:
1.选择所有元素:
       *语法:  *{    }
2.并集选择器:
        *语法:选择器1,选择器2{  }
3.后代选择器:筛选选择器1下的是所有后代选择器2,哪怕是孙子级,只要有选择器2即可
        *语法: 选择器1  选择器2{  },用空格隔开的
4.子元素选择器:
        *语法: 选择器1 >选择器2{ }
5.属性选择器:
        *语法:元素名称[属性名="属性值"]{  }
6.伪类选择器:
       * 语法:元素:状态{}
                *如:<a>
                        *状态:
                                *link:初始化的状态
                                *visited:被访问过的状态
                                *active:正在访问状态
                                *hover:鼠标悬浮状态
属性
                1.字体、文本
                        *font-size:字体大小
                        *color:文本颜色
                        *text-align:对其方式
                        *line-height:行高
                2.背景
                        *background:
                3.边框
                        *border:设置边框,符合属性
                4.尺寸
                        *width:宽度
                        *height:高度
                5.盒子模型:控制布局
                        *margin:外边距
                        *padding:内边距
                                *默认情况下内边距会影响整个盒子的大小
                                *box-sizing: border-box; 设置盒子的属性,让width和height就是最终盒子的大小
                                            *float:浮动
                                *left
                                *right



file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg

作者:
黑马程序员JavaEE培训学院
首发:http://java.itheima.com/

分享到:
在线咨询 我要报名
和我们在线交谈!