Servlet
1、 Servlet 核心
WEB 程序模型:客户端(浏览器) + 服务端(发送 WEB 内容至客户端浏览器)
Tomcat 、 JBOSS
WEB 应用程序结构
Servlet 运行在服务器上的 java 程序,为客户端提供动态内容,使用 JDBC 或 Hibernate 访问数据库, MVC 模式中的 Controller
PPT 20 Servlet 执行流程
2、 Servlet 生命周期
加载和实例化:第一个请求到来或者 Servlet 容器启动
init :调用一次,通常来做一些资源初始化或 one-time activities ( ActionServlet 读取配置文件)
service :线程安全的,多线程并发调用,避免使用成员变量,共享资源要进行同步
destroy : Servlet 容器决定删除一个 Servlet 实例,保存持久化状态
3、 请求处理
请求参数 Parameters : getParameter/Values/Map/Names
请求头 Headers : getHeaders/Names
请求 URL : getContextPath ( WEB 应用路径)、 getServletPath ( Servlet 实例虚拟路径)
请求合作: set/getAttribute
4、 响应生成
响应头: setHeader 、 addHeader
响应体: getWriter/getOutputStream
重定向: sendRedirect (转发和重定向)
5、 资源访问
一切可以被 Servlet 使用的事物
访问 WEB 组件: RequestDispatcher 、 ServletContext 、 include 和 forward
访问数据库组件: JDBC 、连接池( context.xml 、 META-INF )、 jndi 、数据源
6、 HTTP 状态管理
http 的无状态特性
cookie 机制:客户端用来保存状态( cookie 保存购物车信息) getName 、 getValue 、 setMaxAge 、 addCookie 、 getCookies
保存在客户端、大小有限制、用户可以禁止、只能保存字符串
session 机制:服务器端保存状态(会员卡例子, cookie 保存会员卡 ID 、 session 保存会员卡消费信息) setAttribute 、 getAttribute 、 removeAttribute 、 invalidate 、
保存在服务器端、 web 服务器都会支持、可以保存任意类型
追踪 session : cookie 、 URL 重写( response.encodeURL )
7、 过滤器
服务器端位于客户端和请求资源之间(编码过滤等)
登录验证、授权和验证、包装请求( set/getAttribute 、 getParameter 改变属性或参数存储及解析的规则)和响应( getWriter 、 getOutputStream 提供缓冲等)
init —— doFilter —— destroy
8、 监听器
ServletContext 、 HttpSession 、 ServletRequest
set/removeAtrribute
JSP
1、 JSP 概述
JSP 是 web 服务器存储的基于文本的文档, java 服务器页面
JSP 执行流程:翻译——编译——运行最新生成的 Servlet
PPT 7
JSP 优点:无需在 web.xml 部署、自动编译、自动重加载、易学(非 java 程序员)、易读、简单
JSP 环境:客户端浏览器、 web 服务器、开发工具(文本编辑器、 MyEclipse )
2、 JSP 语法
脚本元素(掺杂 java 代码)
声明—— <%! %> 声明成员变量、定义方法, _jspSevice 方法外,一般不会产生输出,导致并发
脚本—— <% %>_jspSevice 方法内, java 代码片段,隐含对象可用,可能产生输出
表达式—— <%= %>_jspSevice 方法内,返回字符串,隐含对象可用,一定生成输出
指令(页面属性、导入标签库、静态包含)
页面指令: <%@page session (默认 true )、 contentType ( text/html;charset=utf-8 )、 pageEncoding ( jsp 页面编码)、 import (导包,默认导入 lang 、 javax.servlet 、 javax.servlet.jsp 、 javax.servlet.http 、)、 errorPage (指示错误跳转页面)、 isErrorPage (指示该页面是否为错误跳转页面, true 则 exception 可用) %>
包含指令:静态包含(翻译)、不可重复定义变量
标签库指令: JSTL 标签使用等
动作(操纵 javabean 组件、动态包含、转向、 plugin )
useBean ( id 、 scope 、 class (父类或接口)、 type (类名))
setProperty ( name 、 property 可通配、 param 、 value 字符串——基本类型)
getProperty ( name 、 property )
include 动态包含(运行),响应包含
forward 转发,响应提交之前, forward 之前自动清除响应缓存
plugin 导入一些 applet 程序
param 用于 jsp:forward , jsp:include , jsp:plugin 中传递参数
注释( html 注释 <!-- --> 、 jsp 注释( <%-- --%> )、 java 注释)
3、 隐含对象
9 个
pageContext 、 request 、 response 、 session 、 application 、 exception 、 out 、 config 、 page ( this )
4、 MVC 架构
model1 、 model2
5、 EL
用于表现的一种简单语言
${} 、 [] 、 . 、 Integer 、 Float 、 String 、 Boolean 、 NULL 、运算符(算术、关系、逻辑)、 empty ( null 或不存在)
定义函数( tld 文件、方法要求 public static )
隐含对象: 11 个 pageContext 、 pageScope 、 sessionScope 、 requestScope 、 applicationScope 、 param 、 paramValues 、 header 、 headerValues 、 cookie 、 initParam
6、 JSTL 标签库
JSTL 标签 +EL ——代替 JSP 中的 java 代码
jstl.jar 、 standard.jar
Core Tags :变量操作( <c:out 、 set 、 remove 、 catch> )、条件判断( if 、 choose+when+otherwise )、循环、迭代( <c:forEach ( items 、 var 、 varStatus 、 begin 、 end 、 step ))、 URL 操作( url 、 redirect 、 param 、 import> )
EL functions
${fn:toUpperCase(name)}length 、 trim
Format 、 SQL 、 XML tags 了解
JavaBean :支持属性、事件、业务方法,有默认构造器、可序列化
Struts :
1、 Struts 介绍
model1 、 model2
2、 Struts 应用结构
PPT 38 Struts 请求生命周期
ActionServlet —— ActionForm ( validate )—— Action —— JSP
3、 Struts 框架组件
核心组件都是 C
辅助组件 V (标记库)
struts-config.xml
form-beans
global-exception/forwards
action-mappings
path 、 type 、 name 、 scope 、 validate 、 input 、 forward
controller
message-resources
4、 Action 相关
Struts 框架结束及应用程序编码开始,不应当包含业务逻辑( biz )
从 FormBean 检索值:不应直接传送 formbean (依赖于 Struts )
自定义响应: return null (文件下载、 ajax ),无需下一步跳转
内置 Action :
DispatchAction (请求参数 function=add ,配置文件中 <action-mapping parameter=”function” —— action 类中的 add 方法)
MappingDispatchAction (请求路径 /add , parameter=”add” —— add 方法)
LookupDispatchAction (一表单多提交 , 请求参数 function=Add%20User ——配置文件 parameter= “ function “——资源文件 button.add= Add User —— Action 类中 getKeyMethodMap ( button.add , add )——调用 add 方法)
ForwardAction
DownloadAction
处理重复提交: token 机制, html:form 或 html:link 自动生成 token 值, saveToken , isTokenValid ( request , true )、 resetToken
自定义 Action 和 ActionForm
5、 Struts 标记库
html
bean
logic
jstl+EL 替代 Struts 标签
6、 Struts 国际化
i18n : internationalization 国际化
l10n : locallization 本地化
java.util.Locale 、 ResourceBoundle
java.text.NumberFormat 、 DataFormat 、 MessageFormat
native2ascii –encoding utf-8 文件 1 文件 2
1-4 字节
request Encoding 、 page Encoding ( jsp )、 response Encoding
7、 Struts 表单验证, validator 框架
客户端 <html:javascript formName=”logonForm”> οnsubmit=return validateLogonForm(this)
服务器端
plug-in 启用 validator 框架 validator-rules.xml 、 validation.xml(formbean 关联 )
form 继承自 ValidateForm ( reset 、 validate )
配置 validation.xml
资源文件
8、 Struts 异常处理
声明式异常 ( 不用在程序中处理 , 配置文件处理 )
<global-excepiton>
< excepiton type 、 path 、 key>
资源文件
9、 Struts Tiles 框架
plug-in 启用 Tiles 框架
定义布局(继承)
创建布局页面
创建要使用的 JSP 页面
使用 Tiles