日期:2014-05-16 浏览次数:20459 次
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、i