JavaWeb复习03、04
JavaWeb复习03、04
CH03-Web应用开发和jsp
Web应用的组件关联关系
Web组件之间一般有下面三种关联关系:
- 请求转发:forward
- 请求重定向:redierct
- 页面包含:include
请求转发
是将客户端的请求转发给同一个应用程序中的其他web组件。
-
请求转发表明该次请求并没有完成,只是转交给其他组件去完成,客户端并不清楚转发的过程,客户端地址栏不发生改变
-
通过RequestDispatcher接口的forward()实现HTTP请求的转发,同时将请求和响应对象传递给目标组件
1
req.getRequestDispatcher("login").forward(req,resp);
请求重定向
是指将客户端的请求重定向到其他任意的URL上
-
请求重定向表明该次请求响应流程已经完成,返回一个响应给客户端,客户端根据响应发起一次新的请求,不能使用之前的request对象
-
通过ServletResponse的sendRedirect()来实现重定向
1
resp.sendRedirect("welcome");
会话跟踪
HTTP协议本质上是一个无状态协议,基于请求-响应的通信模式,所以服务端和客户端之间无法保持连接,保持会话状态
常用的会话跟踪方法有:
-
URL重写
- 将token作为参数,以key=value形式添加到URL字符串中,但有长度限制,安全性低
-
隐藏域
- 将附加在URL中的信息改为放置在form表单的隐藏域中,没有字符限制,无需特殊编码
-
客户端保存信息:Cookies
- 是一个对象,包含以key-value形式保存的token信息,作为HTTP请求头的一部分。Cookies可以由服务端或浏览器端的Javascript构建,最终保存在浏览器中。缺点是用户可以在浏览器进行限制
-
服务端保存信息:HttpSession
-
最安全最常用的技术
-
用户第一次请求服务器时,由服务器创建HttpSession对象,生成唯一的用户ID,其他会话token信息以key-value的形式保存在HttpSession对象中,将用户ID以Cookie或URL的方式告知客户端,整个过程由Web容器进行管理和控制。
-
getSession()
-
数据的作用域
四种作用域由小到大分别为:
- 页面范围:一个Servlet类或一个jsp页面
- 请求范围:一个请求过程的范围,请求被响应之间
- 会话范围:会话范围,整个会话持续过程
- 应用范围:服务器运行过程中
Web应用是通过将值或对象放入对应的作用域对象中,来实现数据作用域控制的,作用域对象均提供setAttribute和getAttribute方法
JSP
jsp是一种建立在Servlet规范提供的功能之上的动态网页技术,在用户第一次请求时,会被转译成Servlet,然后处理用户的请求,jsp可以看成是运行时的Servlet,本质上来说,jsp是一种为了方便程序员编写的Servlet表现形式
语法构成
-
静态内容
- HTML静态文本
-
指令
1
<%@指令 %>
- 主要用于提供整个jsp页面相关信息及属性,如编码方式、导入类等。
- 三种类型:page、include、taglib
-
表达式
1
<%=表达式>
-
小脚本
1
<% java代码 %>
-
声明
1
<%! 方法或变量 %>
-
标准动作
1
<jsp: 动作名>
- 8个标准动作,常用的有:
1
2
3
4
5<jsp:include>;
<jsp:forward>;
<jsp:useBean>;
<jsp:setProperty>;
<jsp:getProperty>; -
注释
1
<%-- 注释内容 --%>
JSP隐式对象
指在jsp脚本中,不需要任何声明和定义就可以直接使用的对象
JDBC
- insert操作
1 | Connection connection=DriverManager.getConnection("","root","password"); |
- select操作
1 | Connection connection=DriverManager.getConnection("","root","password"); |
优化JDBC代码
编写统一的工具类DBUtil.java
编写POJO传递数据
针对一个Bean写一个DAO类
CH04-开发模式和MVC
Model I
指基于JSP+JavaBean的开发模式:JSP负责Web相关的部分,包括数据展示、请求逻辑控制等;JavaBean负责业务逻辑的部分,包括数据的存取,业务的实现
JavaBean指一种用于封装数据和业务逻辑的实体类,为可复用组件:
- 有一个public的无参构造方法
- 一般对所有属性提供get、set方法
- 实现序列化Serializable接口
jsp中提供标准动作:
1 | <jsp:useBean id="" class="" scope=""/> |
model I 只适用于中小型Web应用的开发:
- 用户的请求访问逻辑、数据内容与表示没有分离
- JSP固有特征使其更适合作为数据展示和表达的技术规范
Model II
MVC模式可以分为三层:
- 视图层View:用户界面
- 数据层Model:程序的数据或信息
- 控制层Controller:负责视图层和数据层的交互
三层紧密联系,但相互独立,每一层内部的变化不影响其他层
层与层之间通过接口交互,尽量做到面向接口编程
EL
提供了在JSP脚本元素范围外使用运行时表达式的功能,主要包括:
- 基于命名空间与嵌套的属性访问
- 对集合与操作符的访问
- 一组隐式对象和映射到Java类中方法的可扩展函数
基本语法:${}
常用场景:表达式求值、访问作用域变量和JavaBean、访问数组与集合。
JSTL标准标签库
jsp standard tag library
jsp页面中使用jstl需要使用taglib指令:
1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
**uri:**指定tld文件路径;**prefix:**指定标签前缀
常用标签:
1 | <c:if+条件></c:if> |



