一、学习内容
Apache-DBUtils简介
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。
DbUtils
DbUtils :提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。主要方法如下:
- public static void close(…) throws java.sql.SQLException: DbUtils类提供了三个重载的关闭方法。这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭Connection、Statement和ResultSet。
- public static void closeQuietly(…): 这一类方法不仅能在Connection、Statement和ResultSet为NULL情况下避免关闭,还能隐藏一些在程序中抛出的SQLException。
- public static void commitAndClose(Connection conn)throws SQLException: 用来提交连接的事务,然后关闭连接
- public static void commitAndCloseQuietly(Connection conn): 用来提交连接,然后关闭连接,并且在关闭连接时不抛出SQL异常。
- public static void rollback(Connection conn)throws SQLException:允许conn为null,因为方法内部做了判断
- public static void rollbackAndClose(Connection conn)throws SQLException
- public static void rollbackAndCloseQuietly(Connection)
- public static boolean loadDriver(java.lang.String driverClassName):这一方法装载并注册JDBC驱动程序,如果成功就返回true。使用该方法,你不需要捕捉这个异常ClassNotFoundException。
QueryRunner类
- 该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
- QueryRunner类提供了两个构造器:
- 默认的构造器
- 需要一个 javax.sql.DataSource 来作参数的构造器
- QueryRunner类的主要方法:
- 更新
- public int update(Connection conn, String sql, Object… params) throws SQLException:用来执行一个更新(插入、更新或删除)操作。
- 插入
- public
T insert(Connection conn,String sql,ResultSetHandler rsh, Object… params) throws SQLException:只支持INSERT语句,其中 rsh - The handler used to create the result object from the ResultSet of auto-generated keys. 返回值: An object generated by the handler.即自动生成的键值 - 批处理
- public int[] batch(Connection conn,String sql,Object params)throws SQLException: INSERT, UPDATE, or DELETE语句
- public
T insertBatch(Connection conn,String sql,ResultSetHandler rsh,Object params)throws SQLException:只支持INSERT语句 - 查询
- public Object query(Connection conn, String sql, ResultSetHandler rsh,Object… params) throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
ResultSetHandler接口及实现类
- 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。
- ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。
- 接口的主要实现类:
- ArrayHandler:把结果集中的第一行数据转成对象数组。
- ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
- BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
- BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
- ColumnListHandler:将结果集中某一列的数据存放到List中。
- KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
- MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
- MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
- ScalarHandler:查询单个值对象
JDBC总结
@Test public void testUpdateWithTx() { Connection conn = null; try { //1.获取连接的操作( //① 手写的连接:JDBCUtils.getConnection(); //② 使用数据库连接池:C3P0;DBCP;Druid //2.对数据表进行一系列CRUD操作 //① 使用PreparedStatement实现通用的增删改、查询操作(version 1.0 \ version 2.0) //version2.0的增删改public void update(Connection conn,String sql,Object … args){} //version2.0的查询 public
T getInstance(Connection conn,Class clazz,String sql,Object … args){} //② 使用dbutils提供的jar包中提供的QueryRunner类 //提交数据 conn.commit(); } catch (Exception e) { e.printStackTrace(); try { //回滚数据 conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally{ //3.关闭连接等操作 //① JDBCUtils.closeResource(); //② 使用dbutils提供的jar包中提供的DbUtils类提供了关闭的相关操作 } } /*
BaseDao的目地就是去优化dao实现类
*/ public abstract class BaseDao {
public QueryRunner queryRunner ;
public int pageSize ;
public BaseDao(){
queryRunner = new QueryRunner(MyDataSource.getDataSource());
pageSize = 4;
}
public RowProcessor getRowProcessor(){<br /> _//开启下划线->驼峰转换所用 - strat<br /> _BeanProcessor bean = new GenerousBeanProcessor();<br /> RowProcessor processor = new BasicRowProcessor(bean);<br /> _//开启下划线->驼峰转换所用 - end<br /> _return processor;<br /> }<br />}
/*
优化各种dao接口
@param/
_public interface BaseInterface{ /
查询表中所有数据
@return list集合
*/
public ListfindAll() throws SQLException; /
添加数据
@param t
/
public void save(T t) throws SQLException;
/**
根据主键id进行数据的修改
@param t
/
public void updateById(T t) throws SQLException;
/
根据主键id删除数据
@param id
*/
public void deleteById(Integer id) throws SQLException;
/
根据主键id查询数据
@param id
@return
/
_public T findById(Integer id) throws SQLException;
_/**<br /> * 无条件分页查询<br /> * @param pageNumber 页码<br /> * @return<br /> */<br /> _public List<T> page(Integer pageNumber)throws SQLException;<br /> _/**<br /> * 求表中的记录数<br /> * @return<br /> */<br /> _public Integer pageRecord()throws SQLException;<br />}
//单例模式
_public class MyDataSource {
public static DataSource _dataSource = null ;
private MyDataSource(){
}
public static DataSource getDataSource(){
if(dataSource == null) {
try {
Properties pro = new Properties();
pro.load(MyDataSource.class.getClassLoader().getResourceAsStream(“druid.properties”));
//创建一个数据源对象
dataSource = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
return dataSource;
}
}
web前端简单介绍
web前端包含: pc端页面 移动端页面 1:web前端首先要解决用户体验的问题 2:web前端工程师必备条件:
(1) 能上网,会打字,懂的互联网是什么 (2)兴趣 (3)肯做练习 3:要学哪些东西 (1)软件(浏览器(浏览器插件F12),开发工具)(2)语言:90%的精力网页主要由文字、图片和按钮等元素构成。当然,除了这些元素,网页中还可以包含音频、视频以及Flash等。
web标准
1:w3c 万维网联盟组织 用来制定web标准的机构(组织) 2:web标准:制作网页要遵循的规范 3:web标准规范的分类: 结构标准 表现标准 行为标准 4:结构: html 表现: css 行为:javascript web标准总结:
结构标准:相当于人的身体
表现标准: 相当于人的衣服
行为标准: 相当于人的动作
Html基础
html简介 HTML之所以称为超文本标记语言,不仅是因为他通过标记描述网页内容,同时也由于文本中包含了所谓的“超级链接”,通过超链接可以实现网页的跳转。从而构成了丰富多彩的Web页面。 html标签关系 1.嵌套关系 2.并列关系 嵌套关系:类似父亲和儿子之间的关系
并列关系:类似与兄弟之间的关系
HTML标记—双标记 双标记也称体标记,是指由开始和结束两个标记符组成的标记。其基本语法格式如下:
<标记名></标记名> 该语法中“<标记名>”表示该标记的作用开始,一般称为“开始标记(start tag)”,“</标记名>” 表示该标记的作用结束,一般称为“结束标记(end tag)”。和开始标记相比,结束标记只是在前面加了一个关闭符“/” HTML标记—单标记 单标记也称空标记,是指用一个标记符号即可完整地描述某个功能的标记。其基本语法格式如下:
<标记名/> 水平线标记
在网页中常常看到一些水平线将段落与段落之间隔开,使得文档结构清晰,层次分明。这些水平线可以通过插入图片实现,也可以简单地通过标记来完成,
就是创建横跨网页水平线的标记。其基本语法格式如下:
是单标记,在网页中输入一个
,就添加了一条默认样式的水平线。 换行标记
段落标记段落文本
标题标记标题文本 为了使网页更具有语义化,我们经常会在页面中用到标题标记,HTML提供了6个等级的标题,即、
、
、
、
和
,从
到
重要性递减。 文本样式标记 文本内容 文本格式化常用标记
| 标记 | 显示效果 |
|---|---|
| 和 | 文字以粗体方式显示(XHTML推荐使用strong) |
| 和 | 文字以斜体方式显示(XHTML推荐使用em) |
| 文字以加删除线方式显示(XHTML推荐使用del) | |
| 和 | 文字以加下划线方式显示(XHTML不赞成使用u) |
图像标记
![]()
标记属性
| 属性 | 属性值 | 描述 |
|---|---|---|
| src | URL | 图像的路径 |
| alt | 文本 | 图像不能显示时的替换文本 |
| title | 文本 | 鼠标悬停时显示的内容 |
| width | 像素(XHTML不支持%页面百分比) | 设置图像的宽度 |
| height | 像素(XHTML不支持%页面百分比) | 设置图像的高度 |
创建超链接 文本或图像 href:用于指定链接目标的url地址,当为标记应用href属性时,它就具有了超链接的功能。 target:用于指定链接页面的打开方式,其取值有_self和_blank两种,其中_self为默认值,_blank为在新窗口中打开方式。
可以设置整体链接的打开状态 注意:暂时没有确定链接目标时,通常将标记的href属性值定义为“#”(即href=”#”),表示该链接暂时为一个空链接。不仅可以创建文本超链接,在网页中各种网页元素,如图像、表格、音频、视频等都可以添加超链接。
特殊字符标记
| 特殊字符 | 描述 | 字符的代码 |
|---|---|---|
| 空格符 | ||
| < | 小于号 | < |
| > | 大于号 | > |
| & | 和号 | & |
| ¥ | 人民币 | ¥ |
| © | 版权 | © |
| ® | 注册商标 | ® |
| ° | 摄氏度 | ° |
| ± | 正负号 | ± |
| × | 乘号 | × |
| ÷ | 除号 | ÷ |
| ² | 平方2(上标2) | ² |
| ³ | 立方3(上标3) | ³ |
无序列表 (ul)
无序列表的各个列表项之间没有顺序级别之分,是并列的。其基本语法格式如下:
在上面的语法中,
- 列表项1
- 列表项2
- 列表项3
……标记用于定义无序列表,标记嵌套在
标记中,用于描述具体的列表项,每对
中至少应包含一对。 无序列表中type属性的常用值有三个,它们呈现的效果不同. 默认值:disc 方块:square 空心圆:circle
有序列表(ol)
有序列表其他属性 type start 语法格式:
value1表示有序列表项目符号的类型, value2表示项目开始的数值. start是编号开始的数字,如start=2则编号从2开始,如果从1开始可以省略,或是在
标签中设定value=”n”改变列表行项目的特定编号,例如 。type=用于编号的数字,字母等的类型,如type=a,则编号用英文字母。使用这些属性,把它们放在 或
- 的的初始标签中。 Type属性
| type类型 | 描述 |
|---|---|
| Type=1 | 表示列表项目用数字表示(1,2,3…..) |
| Type=a | 表示列表项目用小写字母表示(a,b,c..) |
| Type=A | 表示列表项目用大写字母表示(A,B,C..) |
| Type=i | 表示列表项目用小写罗马数字表示(i,ii,iii….) |
| Type=I | 表示列表项目用大写罗马数字表示(I,II,III…) |
自定义列表(dl)
定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号。其基本语法如下:
- 名词1
- 名词1解释1
- 名词1解释2
…
- 名词2
- 名词2解释1
- 名词2解释2
…
Html基础table
table 基本结构:
定义表格的表头 定义表格的主体 定义表格的结尾部分注释: 1:、 以及 很少被使用,这是因为糟糕的浏览器支持。
2:如果使用 thead、tfoot 以及 tbody 元素,就必须使用全部的元素。它们的出现次序是:thead、tfoot、tbody
3: 从table结构讲,对行进行分组定义表头单元格,表格中的文字将以粗体居中显示 table中的一些属性
| 属性名称 | 含义 |
|---|---|
| Width | 设置宽度 |
| Height | 设置高度 |
| Cellpadding | 设置文字与单元格内边距 |
| Cellspacing | 设置单元格之间的距离 |
| Border | 设置表格边框 |
| Align | 设置对齐方式(left,center,right) |
| bgcolor | 设置表格背景颜色 |
Html基础from
表单重要作用:采集数据信息 表单语法格式:
表单组成部分:表单控件,提示信息,表单域 表单控件:
| 控件语法 | 含义 |
|---|---|
| 文本输入框 | |
| 密码输入框 | |
| 单选框 | |
| 复选框(多选框) | |
| 文件上传控件 | |
| 普通按钮 value 设置显示文字 | |
| 图片按钮 | |
| 提交按钮 | |
| 重置按钮 |
相关属性:
maxlength:设置最大输入长度
readonly=“readonly”:设置当前控件为只读
disabled=“disabled”:设置当前控件非激活状态
checked=“checked”:单选框或复选框默认选中
name:控件名称
value:获取控件取值 下拉列表框:注释: 1:
注释: 定义标题
2:多选 设置 multiple
3: 默认选中 设置selected
多行文本域 注释: cols:设置文本域宽度 rows:设置文本域高度 表单元素分组
css
css:语法格式
选择器{属性:值; 属性:值;} css:书写位置css:文字基本属性
作用当前行,不可以重用 内嵌式
corlor:文字颜色
font-style:文字格式 normal 字体正常 italic 文字斜体
font-weight:文字粗体 normal 字体正常 bold 文字加粗=700
font-size:文字大小
font-family :文字字体字体 font-family详解: 可以写中文,必须写引号。如果有多个英文单词组成,也需要加引号 “ microsoft yahei” 多个字体用逗号隔开, unicode 字体通过escape(‘’)获取对应的unicode字体 css:font属性连写
font:font-style font-weight font-size font-family css:基础选择器 标签选择器,类选择器,ID选择器,通配符选择器 类选择器命名规范: 不能是纯数字,不能是标签名,不建议使用汉字。一般是点+对应样式描述。例如.shadow一个标签可以同时调用多个类选择器提取公共类 css:复合选择器
标签指定式选择器,后代选择器,并集选择器标签指定式选择器:即….又的关系
后代选择器:选择器中间用空格隔开 并集选择器:多个标签相同的样式集体申明 css样式类型 内联式(行内式)外联式
作用整个网站,完全可以重用 三种样式各自特点 1.内嵌式:基本实现css代码与html代码分离。当前样式只能控制当前页面 2.外链式:完全实现css代码与html代码分离,当前样式可以作用到整个网站 3.行内式:完全没有实现css代码与html代码相分离,写法简答。维护成本高 css三大特性 1.层叠性:浏览器解析CSS是从上至下,当CSS冲突时以最后定义的CSS为准。 2.继承性:继承就是子标签继承了上级标签的CSS样式的属性 3.css优先级:浏览器默认值<标签选择器<类选择器<ID选择器<行内式<!important 4.优先级特点:权重会叠加 继承的权重为0
html标签分类
1.html标签分类的依据:按照标签的显示模式分类 2)块状元素:
特点: 1:独自占一行(霸道) 2:可是设置宽高
3:子元素默认宽度与父容器宽度一致 3)行内元素:
特点: 1:所有元素同在一行
2:不能设置宽高
3:元素的宽度就是包含的文字的宽度和高度 4)行内块元素:
特点:1:所有元素同在一行 2:可以设置宽高 5)元素之间相互转化 display:block display:inline-block
伪类
:link — 伪类,适用于未被用户访问过的链接 :visited — 伪类,适用于已被用户访问过的链接 :hover — 伪类,光标指向一个元素,但此元素未被激活时的样式 :active — 伪类,适用于一个元素被激活时的样式 伪类选择符的顺序:L-V-H-A
| 伪类常用属性 | 属性介绍 |
|---|---|
| text-decoration:none|underline | 设置文字是否有下横线 |
背景background
background-color:设置背景颜色background-image:设置背景图片background-repeat: 设置背景平铺 one-repeat repeat-x repeat-ybackground-postion: 设置背景位置 left,right,center,top,bottombackground-attachment: 设置背景是否固定 背景连写 :没有先后顺序,都是可选的
行高
| 行高单位问题 |
|---|
| 单位是px 例如:16px |
| 单位是em 例如: 1.5em |
| 单位是% 例如: 150% |
| 单位是无 例如: 1.5 |
| 单独给一个标签设置行高 | 结果 |
|---|---|
| 如果行高单位是px | 行高与文字大小无关 |
| 如果行高单位是em | 行高=文字大小*行高值 |
| 如果行高单位是 % | 同上 |
| 如果行高没有单位 | 同上 |
| 给父元素设置行高 | 子元素行高结果 |
|---|---|
| 行高单位是px | 行高=父元素行高 |
| 行高单位是em | 行高=父元素文字大小*行高值(与子元素文字大小无关) |
| 行高单位是% | 同上 |
| 行高单位无 | 行高=子元素文字大小*行高值 |
盒模型
所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。 css中盒子模型由三部分组成: 1边框(border) 2 内边距(padding) 3外边距(margin)
盒模型:边框(border)
| 属性名称 | 介绍 |
|---|---|
| border-width | 设置边框宽度单位以px为主 例如:12px |
| border-style | 设置边框样式 |
| border-color | 设置边框颜色 |
|
border属性其他写法 | | | —- | —- | | border-top | 设置上边框样式 | | border-bottom | 设置下边框样式 | | border-left | 设置左边框样式 | | border-right | 设置右边框样式 |
| 表单小案例 | |
|---|---|
| 轮廓线 | outline-style:none 取消轮廓线 |
| 获取焦点 | :focus 获取鼠标光标状态 |
| 取消表单边框 | border:0 none; 兼容性好 |
| label标签 |
盒模型:内边距(padding)
盒子宽度=盒子宽度+左右内边距+边框宽度
| padding:10px | 上,下,左,右距离分别是10px |
|---|---|
| padding:10px 40px | 上下10px 左右40px |
| padding:10px 40px 20px | 上10px 左右40px 下20px |
| padding:10px 20px 30px 40px | 上10 右20px 下30px 左40px |
盒子模型:外边距(margin)
用法与padding一样,margin对盒子宽度不会有影响
| margin:10px | 距离上下左右边距10px |
|---|---|
| margin:10px 20px | 距离上下10px 左右20px |
| margin:10px 20px 30px | 距离上10px 左右 20px 下30px |
| margin:10px 20px 30px 40px | 距离上10px 右20px 下 30px 左40px |
| margin-left: | 距离左边 |
| margin-right | 距离右边 |
| margin-top | 距离上边 |
| margin-bottom | 距离下边 |
| margin:0 auto | auto 设置为相对边的值 |
Margin之边框合并
外边距合并(叠加)是一个相当简单的概念。简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。 当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。 边距合并问题只发生在块级元素之间 外边距塌陷解决方法: 1.给父元素设置边框即可
2.给父元素设置overflow:hidden 注意: 行内元素不要给上下的margin 和padding 上下margin和padding会被忽略。 左右margin和padding会起作用。
二、学习经验:
html知识点比较简单,进行练习方便理解与掌握,可用时间较充足,应回顾以往的知识点。
三、学习不足与改进:
html知识点的难度不大,但对以往的知识点有所生疏,需要进行练习回顾。
四、学习状态:
第四周的网课,学习状态还行,注意力能够集中到听课,知识点吸收比较充分,学习状态仍需改善。
