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可用)%> isErrorPage为false是否可以跳转?
包含指令:静态包含(翻译)、不可重复定义变量
标签库指令:JSTL标签使用等
动作(操纵javabean组件、动态包含、转向、plugin)
useBean(id、scope、class(父类或接口)、type(类名))
setProperty(name、property可通配、param、value字符串——基本类型)
BeanUtil
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)
自定义响应:returnnull(文件下载、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