JDBC事务的概念事务指的是逻辑上的一组操作,组成这组操作各个逻辑单元要么全部成功,要么全部失败
JDBC的API:
Connection : 连接
获得连接
执行事务的管理
Statement :
执行SQL语句 :
int executeUpdate(String sql);
ResultSet executeQuery(String sql);
ResultSet :
getXXX(int idx) , getXXX(String name);
事务管理的流程:
conn.commit();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
连接池的概述
连接池是装有连接的容器,使用连接的话,可以从连接池中进行获取,使用完成之后将连接归还给连接池。
DbUtils : 工具类 :
使用DBUtils完成CRUD的操作
如何增强一个类中的方法:
继承这种增强是最简单,但是是有使用条 件的:必须能够控制这个类的构造!
装饰者模式使用条件:
增强的类和被增强的类实现相同的接口
在增强的类中获得被增强的类的引用
接口中方法过多,增强其中一个方法,其他方法都要重写.
Druid的概述
Druid阿里旗下开源连接池产品,使用非常简单,可以与Spring框架进行快速整合。
XML的概述XML : 可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.
允许用户自定义的标签
XML 的作用:
传输和存取数据
软件的配置文件
XML 的语法:
XML必须有关闭标签
区分大小写
属性需要引号
标签必须正确嵌套
XML 的文档声明
通常出现在 XML 的第一行第一列的位置
写法:
<?xml 属性名= "属性值" 属性名="属性值"....?>
version : 必须的, 使用"1.0"
encoding : 字符集,是使用浏览器打开的时候采用的默认的字符集的编码
standalone : 描述XML文档是否需要依赖其他文件
XML 的注释
<!-- XML的注释 -->
XML 的元素命名规范:
XML 的属性
XML 的特殊字符和CDATA区
XML 的特殊字符:
< < (小于)
> >(大于)
& &(和号)
&apos ''(单引号)
" ""(引号)
XML 的解析
DOM 和 SAX 的区别:
SAX : 事件驱动的方式,一行一行进行解析的.
缺点 : 不能对文档进行增删改的操作
优点 : 如果文档特别大,不会导致内存的溢出
DOM4J的入门案例步骤:
【步骤一】导入jar包.dom4j-1.6.1.jar
【步骤二】创建解析器
【步骤三】解析文档获得代表文档的Document对象.
【步骤四】获得跟节点.
【步骤五】从跟节点下查找其他的节点.
XPath:
dom4j支持XPath的jar包.
jaxen-1.1-beta-6.jar
dom4j的XPath支持的API:
List document.selectNodes(String xPath);
Node document.selectSingleNode(String xPath);
XML 的约束XML 的约束的概念:
XML 的约束就是用来约束XML 的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数
XML 的约束 : 用来规范XML的写法
XML 的约束的种类及区别
DTD 和Schema :
区别:
DTD语法是自成一体的, Schema 语法就是XML的语法.
Schema 的语法就是XML 的语法所以更容易被解析器所解析.
Schema支持名称空间.
Schema 有比DTD更加强大的语义和语法的约束.
软件的架构C/S架构的软件:
Client / Server 客户端和服务器端的软件. 都是需要在PC端安装的软件.
B/S架构的软件:
Browser / Server 浏览器端和服务器端的软件. 不需要安装到PC端,只需要有一个浏览器即可.
WEB 的资源:
静态资源:
动态资源:
WEB动态资源目录结构
website
|-----静态资源
|-----WEB-INF
|-----web.xml :必须的
|-----classes :可选的
|-----lib :可选的
Tomcat(服务器) 的目录结构
bin : tomcat 的执行的文件
conf : tomcat 的配置文件
lib : tomcat 运行的需要的 jar 包
logs : tomcat 的运行的日志文件
temp : tomcat 产生临时的文件存放的路径
webapps : tomcat 发布的 web 项目的路径
work : tomcat 运行 JSP 的时候, JSP 翻译成 Servlet 的代码存放的路径
HTTP的协议的概述HTTP协议 : 用来规定浏览器与服务器之前需要遵守的规则
HTTP : 超文本传输协议,是互联网上应用最广泛的一种网络协议
HTTP 协议的作用 : 规范浏览器和服务器之间的数据传递
HTTP 协议的特点 :
基于请求和相应的模型
必须先有请求后有相应
请求和相应必须成对出现
默认的端口号是8.0
HTTP 协议的详情
请求部分
请求行
提交方式:
提交方式有很多,常用的 GET 和 POST;
GET 和 POST 的区别:
GET 的提交的参数会显示到地址栏上,而 POST 不显示
GET 往往是有大小限制的,而 POST 没有大小的限制
GET 没有请求体, 而 POST 有请求体
请求头:
都是键值对的形式显示的,一般一个 key 对应一个 value ,也有个别的是一个 key 对应多个 value.
User-Agent : 代表浏览器的类型, --- 文件下载 : 下载中文文件 : IE使用URLEncodor 进行编码,而 Firefox 使用 Base64 编码.
Referer : 代表的是网页的来源. --- 防盗链.
If - Modified - Since : 通常与相应中的头 Last - Modified 一起使用查找本地缓存
请求体:
相应部分
响应行:
协议版本
状态码
200 : 成功
302 : 重定向
304 : 查找本地缓存
404 : 资源不存在
500 : 服务器内部错误
响应头: 键值对,一般一个 key 对应一个 value ,也有一个 key 对应多个 value.
响应体:显示浏览器的页面的内容
Servlet 的概念Servlet 就是一个运行在WEB服务器上的小的 Java 程序,用来接收和相应从客户端发送过来的 请求,通常使用HTTP协议
Servlet 的作用:
用来处理从客户端浏览器发送的请求,并且可以对请求作出相应
使用Servlet :
编写一个类实现 Servlet 接口
将编写的这个类配置到服务器中
使用 ServletRequest 接收参数
String getParameter(String name); ---用于接收一个名词对应一个值得数据.
String[] getParameterValues(String name); ---用于接收一个名词对应多个值得数据.Map getParameterMap(); ---用于接收表单的所有数据, Map 的 key 是表单提交的参数名称, Map 的 value 是提交参数的值.
Enumeration getParameterNames() ---用于获取表单中提交的所有的参数的名称.
Servlet 的实现的关系:
Servlet : 接口
|
GenericServlet : 通用的 Servlet
|
HttpServlet : HttpServlet
创建数据库和表 → 创建包和类 → 引入 jar 包 (1.mysql 的数据库的驱动包 2.c3p0连接池的 jar 包 3.dbutils的包)→ 引入 login 的页面 → 编写 Servlet → Service → DAO
Servlet 的生命周期:生命周期 : 就是一个对象从创建到销毁的过程.
Servlet 生命周期 : Servlet 从创建到销毁的 过程
用户第一次访问 Servlet 的时候,服务器会创建一个 Servlet 的实例, 那么 Servlet 中 init 方法就会执行,任何一次请求服务器都会创建一个新的线程访问 Servlet 中的 servlet 的方法,在servlet 方法内部根据请求的方式的不同调用 doXXX 的方法,(get 请求调用 doGet,post 请求调用 doPost),当 Servlet 中服务器中移除,或者关闭服务器,Servlet 的实例就会被销毁,那么 destroy 方法就会执行 HTTP协议:用来规定浏览器与服务器之前需要遵守的规则
HTTP的作用:规范浏览器和服务器之间的数据传递
HTTP协议的特点:
HTTP协议的详解请求部分
请求行
提交方式:
提交方式有很多,常用的GET和POST:
GET和POST的区别:
GET的提交的参数会显示到地址栏上,而POST不显示.
GET往往是有大小限制的,而POST没有大小的限制.
GET没有请求体,而POST有请求体.
请求头
都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
User-Agent :代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,而 Firefox使用Base64编码.
Referer :代表的是网页的来源. --- 防盗链.
If-Modified-Since :通常与响应中的头Last-Modified一起使用查找本地缓存.
请求体
就是POST提交方式的提交的参数.
响应部分
响应行:
协议版本
状态码:
200 :成功
302 :重定向
304 :查找本地缓存
404 :资源不存在
500 :服务器内部错误
状态码描述
响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.
Last-Modified :与请求中的If-Modified-Since一起使用查找本地缓存.
Content-Dispostion :文件下载的使用使用的一个头信息.
Location :重定向的跳转的路径.
Refresh :定时刷新/定时跳转.
响应体:显示浏览器的页面的内容.
Servlet 的概述Servlet :用来处理从客户端浏览器发送的请求,并且可以对请求作出相应
使用 Servlet :
编写一个类实现 Servlet 接口
将编写的这个类配置到服务器中
Servlet 的入门 :
配置:
<!-- 配置Servlet --> <servlet> <!-- Servlet的名称 --> <servlet-name>test1</servlet-name> <!-- SErvlet的全路径 --> <servlet-class>com.itheima.a_servlet.ServletDemo1</servlet-class> </servlet>
<!-- Servlet的映射 --> <servlet-mapping> <!-- Servlet的名称 --> <servlet-name>test1</servlet-name> <!-- Servlet的访问路径 --> <url-pattern>/ServletDemo1</url-pattern> </servlet-mapping>
使用 ServletRequest 接收参数 :
String getParameter(String name); --- 用于接收一个名称对应一个值得数据
String[] getParameterValues(String name); --- 用于接收一个名称对应多个值得数据
Map getParameterMap(); --- 用于接收表单中的所有的数据,Map 的 key 是表单提交的参数名称,Map 的value 是提交参数的值
Enumeration getParameterNames() --- 用于获取表单中提交的所有的参数的名称
Servlet的实现的关系
Servlet :接口
|
GenericServlet :通用的Servlet
|
HttpServlet :HttpServlet
编写一个类继承HttpServlet,重写doGet和doPost方法.
配置
Servlet的生命周期: 生命周期:就是一个对象从创建到销毁的过程.
Servlet生命周期:Servlet从创建到销毁的过程.
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
Servlet的相关的配置:启动时创建Servlet
Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
<load-on-startup>2</load-on-startup> --- 传入正整数,整数越小,被创建的优先级就越高.
url-pattern的配置
url-pattern配置方式共有三种:
完全路径匹配 :以 / 开始
例如: /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
目录匹配:以 / 开始 需要以 * 结束. 例如: /* ,/aaa/* ,/aaa/bbb/*
扩展名匹配:不能以 / 开始 以 * 开始的. 例如: *.do , *.action
错误的写法: /*.do
开发中的路径的编写:相对路径:都是需要找位置相对关系.不能以 / 开始的.
./ 当前路径 ../上一级目录
绝对路径:不需要找位置相对关系. 以 / 开始的.
绝对路径中分为客户端路径和服务器端路径:
客户端路径一定要加工程名. /day09/ServletDemo6
服务器端路径不需要加工程名. /ServletDemo6
Refresh : 可以定时页面跳转,需要使用程序设置头信息才可以
response中设置响应头ServletContext:重要ServletContext的作用:
1.用来获得全局初始化参数.
2.用来获得文件的MIME的类型.
3.作为域对象存取数据.
ServletContext是一个域对象.
4.用来读取web项目下的文件.
response处理中文乱码字节流:
设置浏览器默认打开编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
中文转成字节数组编码
response.getOutputStream().write("王守义".getBytes("UTF-8"));
字符流:
设置response的缓冲区的编码
response.setCharacterEncoding("UTF-8");
设置浏览器默认打开的编码.
response.setHeader("Content-Type", "text/html;charset=UTF-8");
请求对象-request对象获得客户机信息:
GET方式乱码处理:GET方式提交的参数会在地址栏上显示 在请求行的路径后面.浏览器就会对路径进行一次编码.将编码后内容取出来.再进行一次编码.
处理方式:
修改服务器提交的编码.
采用URLEncoder 和 URLDecoder类对中文进行编码和解码.
使用String类的构造方法:
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(username);
数据的封装:BeanUtils.(内省技术)
转发和重定向的区别:重定向
response.sendRedirect(String path); -- 完成重定向
转发
request.getRequestDispatcher(String path).forward(request,response);
区别
使用转发和重定向对登录的功能优化:使用request域保存一个值 : 在一次请求范围内有效的.
登录失败就可以保存一个错误信息到request中在动态页面中取出这个值${msg}