日期:2014-05-16  浏览次数:20412 次

Servlet&JSP&Struts知识总结

 

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