享受JAVA的空气: Struts学习笔记(二)

来源:百度文库 编辑:神马文学网 时间:2024/04/28 05:30:09
Struts学习笔记(二)
整理了一些Struts入门的一些知识,我个人认为是比较重要和实用的,整理的还不够全,在以后对Struts
的深入学习过程中,我会逐步的将它完善,希望对热爱Struts框架的朋友能有一点帮助enjoying^_^
在Java API 中有以下几个比较重要的类
他们决定了Web应用的请求/响应方式各种共享数据的存放地点:
HttpServletRequest:封装用户的Http请求,课存放request范围内的共享数据
HttpServletResponse:用于生成Http响应结构
HttpSession:Servlet容器为每个HTTP会话创建一个HttpSession实例,可以存放session范围的共享数据
ServletContex: Servlet容器为每个Web应用创建一个ServletContext实例,用来存放application范围的共享数据
四种在web组件中共享数据的特定范围:
page:用户请求访问的当前JSP
request:用户请求访问的当前Web组件,以及和当前Web组件共享同一个用户请求的其他Web组件。如果用户访问的时JSP网页,那么该JSP网页的<%include>指令以及标记包含的其他JSP文件也能访问共享数据。
session:整个HTTP会话的生存周期
application:Web应用的生命周期。
请求重定向与请求转发的区别:
请求重定向可以是任何一个URL,而请求转发仅限于同一应用的URL
重定向的源组件和目标组件不共用同一个HttpServletRequest,一次不能共享request范围内的共享数据;而请求转发将ServletRequest和ServletResponse对象传递给目标组件,使得目标组件可以访问转发页面的整个请求的上下文(实现了数据共享)。/RequestDispatcher.Forward(request,response) response.sendRedirect()
Struts框架:
Struts框架中最核心的组件:ActionServlet(extend javax.servlet.http.HttpServlet)
对于采用Struts框架的Web应用,在Web应用启动的时候回加载并初始花ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把他们存放到各种配置对象中,例如Action的映射信息存放在ActionMapping对象中
Struts的工作流程:
当ActionServlet接收到一个客户请求时将执行如下流程:
1.  检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
2.  如果ActionForm实力不存在,就创建一个,把客户提交的表单保存带ActionForm中,在这里你可以进行针对输入的格式语法等方面的数据简单验证。
3.  由配置信息决定是否需要进行表单验证,需要 则调用ActionForm中的validate()方法。
4.  如果ActionForm的validate()返回null则表明成功,返回ActionMessage的ActionErrors对象就表示失败。
5.  ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果Action不存在就先创建该实例,然后调用气execute方法。
6.  Action的execute()方法返回一个ActionForward对象,其再把请求转发给ActionForward对象指向的JSP,所以不要忘记在execute方法中去自定义一个ActionForward的实例哦。
7.  ActionForward对象指向的JSP组件生成动态网页,返回结果给客户。
访问封装在MessageResources中的本地化文本:
将一些常用的输出信息,或者显示文本同一放在一个或多个自愿文件中然后利用特定的类的实例来进行访问,不仅清洁了代码,方便了控制,对项目的可维护可移植性也比较有利。
Action类中定义了getResources(HttpServletRequest request)方法,该方法返回当前默认的MessageResources对象,它封装了Resouce Bundle中的文本内容。可以调用MessageResouces类的getMessage(String key)方法对某条资源进行访问。