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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-6-7 10:33 编辑

就业班day_11---day_14学习笔记
JDBC事务的概念
事务指的是逻辑上的一组操作,组成这组操作各个逻辑单元要么全部成功,要么全部失败
JDBC的API:
Connection : 连接
​       获得连接
​       执行事务的管理
Statement  :
​       执行SQL语句 :
​             int executeUpdate(String sql);
​             ResultSet executeQuery(String sql);
ResultSet :
​        getXXX(int idx) , getXXX(String name);
事务管理的流程:
  • 开启事务
    conn.setAutoCommit(false);

  • 提交事务

​      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、Xml)开始
  • 名称不能包含空格
  • 名称不能包含冒号(:)

XML 的属性
  • 属性的名称规范与元素一致
  • 属性需要使用引号

XML 的特殊字符和CDATA区
  • XML 的特殊字符:      
    <              < (小于)
    >             >(大于)
    &        &(和号)
    &apos        ''(单引号)
    "       ""(引号)

  • XML 的CDATA 区: (CDATA:Character Data)
  • <![CATAT[  内容  ]]>

XML 的解析
  • DOM 解析 : DOM : Document Object Model.
  • SAX 解析 : Simple Api for XML.

DOM 和 SAX 的区别:
  • DOM : 一次性将文件加载到内存,形成树形结构进行解析
    缺点 : 如果文档特别大,容易导致内存的溢出
    优点 : 可以对 XML 进行增删改的操作

  • 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端,只需要有一个浏览器即可.
  • 优点:服务器端更新,客户端浏览器不需要进行更新.

  • 缺点:效果不炫,所有的代码运行都在服务器端,导致服务器压力过大.

  • 效果:使用HTML5,CSS3可以做出很炫效果.

  • 服务器端压力:搭建服务器的集群.而且还有AJAX技术.

WEB 的资源:
静态资源:
  • HTML  ,   CSS   ,   JS   ,  图片...

动态资源:
  • PHP
  • ASP
  • Servlet/JSP

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 一起使用查找本地缓存

请求体:
  • 就是 POST 提交方式的提交的参数.

相应部分
响应行:
  • 协议版本
  • 状态码

    • 200       : 成功
    • 302       : 重定向
    • 304       : 查找本地缓存
    • 404       : 资源不存在
    • 500       : 服务器内部错误


响应头: 键值对,一般一个 key 对应一个 value ,也有一个 key 对应多个 value.
  • Last - Modified                           : 与请求中的 If - Modified - Since 一起使用查找本地缓存
  • Content - Dispostion                 : 文件下载的使用,使用的一个头信息.
  • Location                                       : 重定向的跳转的路径.
  • Refresh                                         : 定时刷新/定时跳转.

响应体:显示浏览器的页面的内容
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
  • 编写一个类继承 HttpServlet ,重写 doGet 和 doPost 方法
  • 配置

创建数据库和表 → 创建包和类 → 引入 jar 包 (1.mysql 的数据库的驱动包 2.c3p0连接池的 jar 包  3.dbutils的包)→ 引入 login 的页面 → 编写 Servlet → Service → DAO
Servlet 的生命周期:
生命周期 : 就是一个对象从创建到销毁的过程.
Servlet 生命周期 : Servlet 从创建到销毁的 过程
  • 何时创建 : 用户第一次访问Servlet 创建 Servlet 的实例
  • 何时销毁 : 当项目从服务器中移除的时候,或者关闭服务器的时候

HTTP协议:用来规定浏览器与服务器之前需要遵守的规则
HTTP的作用:规范浏览器和服务器之间的数据传递
HTTP协议的特点:
  • 基于请求和相应的模型

    • 必须先有请求后有相应
    • 请求和相应必须成对出现


  • 默认的端口号是80

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的时候,服务器会创建一个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中设置响应头
  • addHeader(String name,String value);                --- 针对一个key对应多个value的响应头.

    • addDateHeader(String name,long date);
    • addIntHeader(String name,int value);


  • setHeader(String name,String value);                --- 针对一个key对应一个value的响应头.

    • setDateHeader(String name,long date);
    • setIntHeader(String name,int value);


ServletContext:重要
ServletContext的作用:
1.用来获得全局初始化参数.
2.用来获得文件的MIME的类型.
3.作为域对象存取数据.
ServletContext是一个域对象.
  • 作用范围:整个web工程.

  • 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独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对象
获得客户机信息:
  • getMethod();                        ---获得请求方式.

  • getQueryString();                ---获得请求路径后的参数.

  • getRemoteAddr();                ---获得客户机的IP地址.

  • getRequestURI();                ---获得请求的路径

  • getRequestURL();                ---获得请求的路径

  • getContextPath();                ---获得工程名

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域保存一个值 : 在一次请求范围内有效的.
登录失败就可以保存一个错误信息到request中在动态页面中取出这个值${msg}

1 个回复

倒序浏览
我来占层楼啊   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马