04Struts1(扩展控制器)

上传人:新** 文档编号:510304386 上传时间:2023-12-12 格式:DOC 页数:21 大小:354.50KB
返回 下载 相关 举报
04Struts1(扩展控制器)_第1页
第1页 / 共21页
04Struts1(扩展控制器)_第2页
第2页 / 共21页
04Struts1(扩展控制器)_第3页
第3页 / 共21页
04Struts1(扩展控制器)_第4页
第4页 / 共21页
04Struts1(扩展控制器)_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《04Struts1(扩展控制器)》由会员分享,可在线阅读,更多相关《04Struts1(扩展控制器)(21页珍藏版)》请在金锄头文库上搜索。

1、Version1.0Struts1x(四)扩展控制器 课程介绍r;严本课程主要讲授Stmts1.x基础知识 适用于Java开发工程师面向的学员是对Servlet,JSP有基本了解的J2EE开发工程师全部课程时间大约是40分钟概要理解Struts框架的初始化流程理解Struts框架的响应客户请求的流程创建Action类理解业务逻辑验证的流程Struts控制器组件Struts控制器组件主要包括:ActionServlet组件:充当Struts框架的中央控制器-Requestprocessor组件:充当每个子应用模块的请求处理器- Action组件:负责处理一项具体的业务Struts控制器组件的类框

2、图(bjiiiI多应用模块多应用模块指同一个应用包含多个子应用,每个子应用可以处理相关的一组功能。例如,对于网上购物应用,可以由一个子应用来处理商品和商品目录信息,再由另一个子应用处理购物车和订单信息。把应用划分成多个模块,可以简化应用的并行开发过程,缩短开发周期。所有的子应用都共享同一个ActionServlet实例,但每个子应用有单独的配置文件和Requestprocessor实例。多应用模块weh.xtnlStruts框架初始化流程Servlet容器会在ActionServlet被加载后立即执行它的init()方法,以下是ActionServlet的init()方法完成的初始化操作:-

3、(1)调用initlnternal()方法,初始化Struts框架内在的消息资源,如与系统日志相关的通知、警告和错误消息。- (2)调fflinitOther()方法,从web.xml文件中加载ActionServlet的初始化参数,女nconfig参数。- (3)调fflinitServlet()方法,从web.xml文件中加载ActionServlet的URL唤射信息。此外,还会注册web.xml和Struts配置文件所使用的DTD文件。这些DTD文件用来验证web.xml和Struts配置文件的语法。Struts框架初始化流程(4)调用initModuleConfigQ方法,加载并解析默

4、认子应用模块的Struts配晝文件,创建ModuleConfig对象,抱它存褊在ServletContext中。- (5)调用initModuleMessageResources()方法,加载并初始化默认子应用模块的消息资滅创建MessageResources对象,把它存储在ServletContext中。- (6)调用initModuleDataSources0方法,加载并初始化默认子应用模块的数据源。如果在Struts置文件中没有定义vdatasources元素,就忽略这一步骤。-(7)调用initModulePlugins()方法,加载并初始化默认子应用模块的所有插件。-(8)当默认子应

5、用模块被成功的初始化后,如果还包括其他子应用模块,将重复步骤(4)到步骤(7),分别对其他子应用模块进行初始化。周甫()Struts框架初始化流程ActionSer/letStruts框架响应客户请求的流程ActionServlet的process()方法当ActionServlet实例接收到HTTP请求后,在doGet()或doPost()方法中都会诟用process()方法来处理请隶。IUF是ActionServlet的pocess()芳法的源代码:protectedvoidprocess(HttpServletRequestrequest,HttpServletResponserespo

6、nse)throwsIOException,ServletExceptionIModulelltils.getlnstance().selectModule(requestzgetServletContext();getRequestProcessor(getModuleConfig(request).process(request,response);12周甫()Action类的execute()方法7;publicActionForwardexecute(ActionMappingmapping?ActionFonnform,HttpServletRequestrequest,HttpSe

7、rvletResponseresponse)throwsIOExceptiorServletException;Action类的execute()方法的参数和返回值 execute()方法包含以下参数:-ActionMapping:包含了这个Action的配置信息,和struts-config.xml文件中的vaction元素对应。-ActionForm:包含了用户的表单数据,当Struts框架调用execute()方法时,ActionForm中的数据已经通过了表单验证。- HttpServletRequest:当前的HTTP请求对象 HttpServletResponse:当前的HTTP响应

8、对象Action类的execute()方法返回ActionForward对象,它包含了请求转发路径信息。访问ResourceBundleMessageResourcesmessages二getResources(request);在Action类中定义了getResources(HttpServletRequestrequest)方法,该方法返回当前默认MlMessageResources对象,它封装了ResourceBundle中的文本内容。接下来Action类就可以通过MessageResources对象来访问文本内容。例如,如果要读取消息key为“hello.jsp力tie”对应的文本内

9、容,可以调用MessageResources类的getMessage(Stringkey)方法:Stringtitle=messages.getMessage(hello.jsp.title);业务逻辑验证流程如果用户输入的姓名为“Andy”,将创建包含错误信息的ActionMessage对象,ActionMessage对象被保存到ActionMessages对象中。接下来调用在Action基类中定义的saveErrors()方法,它负责把ActionMessages对象保存到request范ill内。最后返回ActionForward对象Struts框架会根据ActionForward对象包

10、含的转发信息把请求转发到恰当的视图组件视图组件通过vhtml:errors标签把request范围内的ActionMessages对象中包含的错误消息显示岀来,提示用户修改错误。16周甫()消息类的类框图访问模型组件IIriI|IUserDAOuserdao二newUserDAO()user.setName(Name);User二userdao.findByName(user);UserDAO代表业务数据和业务逻辑向视图组件传递数据request.setAttribute(userinfo,user);session.setAttribute(Uuserinfo;user);以上代码完成:-把

11、user对象保存在request范围内。-把user对象保存在session范围内。把HTTP请求转发给合适的视图组件/ForwardcontroltothespecifiedsuccessURIreturn(mapping.findForward(uuserinfo”);20周甫()在配置文件中作了如下配置:练习题1问题:以下哪些说法是正确的?选项:-(A)每个HTTP请求对应一个单独的ActionServlet实例-(B)对于每个请求访问HelioAction的HTTP请求,Strutsli架会创建一个单独的HelloAction实例。-斤)每个子应用对应一个单独的Requestprocessor实-(D)每个子应用对应一个单独的web.xml文件答案:C练习题2问题:ActionFormBean对象是由谁创建的?选项:-(A)标签处理类一(B)ActionServlet-(C)Requestprocessor-(D)Action答案:C

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号