第1部分 Servlet技术
(1) Http是一个无状态协议,它使用端口发送和接收消息,80端口是为Http开放的。
(2) Http请求消息使用GET或POST方法在Web上传输请求。GET方法传递的数据对客户端是可见的,查询字符串的长度是有长度限制的。POST方法发送数据对客户端不可见,且对发送的数据量没有限制。
(3) 基于Java技术的Web应用程序由Servlet、JSP页面、图像、HTML文件、JavaBean、Applet等组成。将Web应用程序文件打包成 .war文件,要求按特定的目录机构组织文件。目录层次演示:
http://127.0.0.1:8080/myroot
myroot 顶层目录
——myhtm.html 静态文本
——myjsp.jsp JSP页面文件
——WEB-INF 特定目录,不可引用
——classes Web应用程序所需要的任何其它类都存储在该文件夹下
——lib Web应用程荀所需的 .jar文件
——tags .tag标签文件存放目录
——.tld 标记库描述符文件
——web.xml 应用程序部署描述符文件
(4) Servlet是一个用Java编写的应用程序,在服务器上运行,处理请求的信息并将其发送到客户端。其生命周期为:实例化->初始化[init()]->服务[service()]->破坏[destroy()]->不可用。
(5) Servlet是实现javax.servlet.Servlet接口的对象,大多数Servlet从GenericServlet或HttpServlet类扩展而来。ServletAPI包含于javax.servlet和javax.servlet.http两个包中。
(6) javax.servlet包的主要接口和类:
a) ServletInputStream类 用于从客户端读取二进制数据
b) ServletOutputStream类 向客户端发送二进制数据
c) GenericServlet类 抽象类
d) ServletRequest接口 用于封装客户向Servlet的请求信息
e) ServletResponse接口 Servlet响应对象
f) ServletContext接口 用于获取Servlet容器信息
g) ServletConfig接口 Servlet初始化时Servlet容器传递给Servlet的配置信息
h) Servlet接口 定义所有Servlet必须实现的方法
(7) javax.servlet.http包的主要接口和类:
a) HttpServletRequest接口 扩展ServletRequest接口
b) HttpServletResponse接口 扩展ServletResponse接口
c) HttpSession接口 用于标识客户端并存储有关客户端的信息
d) HttpServlet类 扩展GenericServlet类
e) Cookie类 用户创建Cookie
(8) 会话跟踪的常用方法包括URL重写、隐藏表单域和使用Cookie等技术。
(9) HttpServletRequest接口的getSession()和getSession(booleanvalue)方法用于创建会话,其中getSession(true)等同于getSession,当没有与当前请求关联的会话时,创建一个会话,而getSession(false)此时则会返回null。
(10) Servlet运行于一个称为ServletContext的环境,该环境描述了与Servlet关联的各种参数,一个Servlet只属于一个ServletContext。
(11) Servlet间通信的3种基本需求为:
a) 访问当前从Servlet加载的Servlet
b) 使用其它Servlet功能执行一项任务
c) 共享Servlet之间的状态信息
(12) JavaMail API用于发送和接收邮件,使用POP3或IMAP接收消息,使用SMTP发送消息。
(13) Javax.mail包中的类和接口:
a) Message抽象类 email邮件消息模型
b) Folder抽象类 用于管理email邮件,包含消息和自文件夹
c) Store抽象类 提供对文件加的访问方法并验证连接
d) Session类 定义了用来与邮件系统进行通信的邮件会话
第2部分 JSP技术
(1) JSP是一种Java服务器端技术,它用于在网页上显示动态内容。
(2) JSP页面构成
a) 静态内容 HTML元素等
b) 指令 <%@ page language=”java”pageEncoding=”GBK” %>
c) 表达式 <%=”Hello World!” %>
d) Scriptlet <%out.println(“<h1> HelloWorld!</h1>”); %>
e) 声明 <%!public String welcome = “HelloWorld!”; %>
f) 动作 <jsp:include page=”/welcome.jsp”flush=”true” />
g) 注释 <%-- 这个注释客户端看不见 --%>
(3) 表达式、Scriptlet和声明都是JSP脚本元素。
(4) JSP目前的指令有3种,即page、include、taglib。
(5) JSP隐式对象:
a) 输入输出对象 request、response、out
b) 作用域通信对象 session、application、pageContext
c) Servlet对象 page、config
d) 错误对象 exception
(6) JavaBean是一个公共类,具有不带任何参数的公有构造函数,具有get()和set()方法。
(7) JSP标准动作:<jsp:setProperty>、<jsp:getProperty>、<jsp:useBean>、<jsp:forword>、<jsp:include>
(8) EL表达式可用于所有HTML和JSP标签中。其隐式对象包括:pageContext、request、param、paramValues、pageScope、requestScope、sessionScope、applicationScope
(9) 自定义标签在功能逻辑上与JavaBean类似,都封装Java代码;自定义标签时可重用的组件代码,JavaBean也是可重用的组件。
(10) 标签处理程序是JSP文件中自定义标签的实现代码,是一个运行时调用的Java类。它必须实现或扩展javax.servlet.jsp.tagext包中的类和接口。
(11) Javax.servlet.jsp.tagext包中的类:
a) Tag接口 定义了标签处理程序和JSP页面生成的Servlet之间的基本协议
b) IterationTag接口 扩展了Tag接口,增加了一个控制重复处理标签主体的方法
c) BodyTag接口 扩展了IterationTag接口,由需要对标签主体进行访问并能对其进行操作的标签处理程序使用
d) TagSupport类 实现了Tag和InterationTag接口,支持简单标签和主体迭代
e) BodyTagSupport类 实现BodyTag接口,扩展TagSupport类,支持需要访问和操纵标签的主体内容的标签
(12) 标签生命周期:
(13) 使用标签文件,不需要标签库描述符文件,且标签文件必须存放在WEB-INF/tags文件夹或其子目录中。
(14) JSTL提供4个主要的标签库:核心标签库、国际化(I18N)与格式化标签库、XML标签库以及SQL标签库。
(15) 核心标签库:
a) 通用标签:<c:set>、<c:remove>、<c:out>
b) 条件标签:<c:if>、<c:choose>
c) 迭代标签:<c:forEach>、<c:forTokens>
第3部分 过滤器的设计模式
(1) 过滤器是向Web应用程序的请求和响应处理添加功能的Web服务组件。过滤器必须实现javax.servlet.Filter接口。
(2) 过滤器生命周期:实例化à初始化[init()]à过滤[doFilter()]à销毁[destroy()]
(3) 过滤器API:
a) Filter接口 在请求与响应之间执行过滤任务
b) FilterChain接口 用于调用过滤链中的下一个过滤器
c) FilterConfig接口 提供过滤器初始化
(4) ModelII与ModelI的不同是将Servlet纳入架构中扮演前端Controller角色。
(5) MVC将交互式应用程序组织成3个独立的模块
a) 应用程序模块 表示数据和业务逻辑
b) 数据表示 表示用户输入
c) 控制器 控制流程