《轻量级J2EE企业应用实战--Struts+Spring+Hibernate整合开发》

来源:互联网 发布:河南农信数据脱敏 编辑:程序博客网 时间:2024/04/28 05:06

第2 章 传统表现层 JSP:

JSP 文件必须在JSP 服务器内运行。

JSP 文件必须生成Servlet才能执行。

每个JSP 页面的第一个访问者速度很慢,因为必须等待JSP 编译成Servlet.

〈%@include file="relativeURLSpec" %〉

如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include 语句。

JSP 的7 个动作指令

• jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
• jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
• jsp:include: 用于动态引入一个JSP 页面。
• jsp:p1ugin: 用于下载JavaBean 或Applet 到客户端执行。
• jsp:useBean: 使用JavaBean 。
• jsp:setProperty: 修改JavaBean 实例的属性值。
• jsp:getProperty: 获取JavaBean 实例的属性值。

JSP 的9 个内置对象

• application: javax.servlet. ServletContext 的实例,该实例代表JSP 所属的Web 应用
本身,可用于JSP 页面,或者Servlet 之间交换信息。常用的方法有
getAttribute(String attNarne) , setAttribute(String attNarne , String attValue) 和
getInitPararneter(String paramNarne)等。
• config: javax.servlet. ServletConfig 的实例,该实例代表该JSP 的配置信息。常用
的方法有getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。
事实上, JSP 页面通常无须配置,也就不存在配置信息。因此,该对象更多地在
Servlet 中有效。
• exception: java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只
有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对
象才可以使用。常用的方法有getMessageO和printStackTraceO等。
• out: javax.servlet.jsp.JspWriter 的实例,该实例代表JSP 页面的输出流,用于输出
内容,形成HTML 页面。
• page: 代表该页面本身,通常没有太大用处。也就是Servlet 中的this ,其类型就
是生成的Se凹let 。
• pageContext: javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,
使用该对象可以访问页面中的共享数据。常用的方法有getServletContextO和
getServletConfigO等。
• request: javax.servlet. http:HttpServletRequest 的实例,该对象封装了一次请求,客
户端的请求参数都被封装在该对象里。这是一个常用的对象,获取客户端请求参
数必须使用该对象。常用的方法有getPararneter(String paramNarne), getPararneter

Values(String paramName), setAttribute(String atttibuteName,Object attributeValue),
getAttribute(String attributeName)和setCharacterEncoding(String env)等。

request 对象不仅封装了表单域值,还可以封装地址栏传递的参数。
• response: javax.servlet.http.HttpServletResponse 的实例,代表服务器对客户端的响
应。通常,也很少使用该对象直接响应,输出响应使用out 对象,而response 对
象常用于重定向。常用的方法有sendRedirect(j ava.lang.String location)等。
• session: javax.servlet.http.HttpSession 的实例,该对象代表一次会话。从客户端浏
览器与站点建立连接起,开始会话,直到关闭浏览器时结束会话。常用的方法有:
getAttribute(String attName), setAttribute(String attName, String attValue)等。

out 是页面输出流,是JstWriter 的实例。JspWriter 是Writer 的子类, Writer 是字符流,

无法输出非字符内容一一即无法输出字节流。

与forward 不同的是,重定向会丢失所有的请求参数及请求属性。

增加Cookie 也是使用response 内置对象完成的, response 对象提供了一个方法。
• void addCookie(Cookie cookie): 增加Cookie。

Servlet 的开发

• doGet: 用于响应客户端的get 请求。
• doPost: 用于响应客户端的post 请求。
• doPut: 用于响应客户端的put 请求。
• doDelete: 用于响应客户端的delete 请求。

• init(ServletConfig config): 创建Servlet 实例时,调用的初始化方法。

如果重写了init(ServletConfig config)方法,则应在重写该方法的第一行调用
super.init(config) 。该方法将调用HttpSe凹let 的init 方法。
• destroyO: 销毁Servlet 实例时,自动调用的资源回收方法。

Servlet的生命周期

(1)创建Servlet 实例。
(2) Web 容器调用Servlet 的init 方法,对Servlet 进行初始化。
(3) Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。如果客户端有
get 请求,容器调用Se凹let 的doGet 方法处理并响应请求。对于不同的请求,有不同的
处理方法,或者统一使用service 方法处理来响应用户请求。
(4) Web 容器角色销毁Servlet 时,调用Servlet 的destroy 方法,通常在关闭Web
容器之时销毁Servlet。

如果需要Web 应用启动时,可使用load-on-startup 元素完成Servlet 的初始化。
load-on-startup 元素只接收一个整型值,这个整型值越小, Servlet就越优先初始化。

访问Servlet 配置参数要通过ServletConfig 类的实例完成, ServletConfig提供如下
方法。
• java.lang.String getInitParameter(java.lang.String name): 用于获取初始化参数。

JSP 的内直对象config 就是此处的ServletConfig

原创粉丝点击