欢迎来到天天文库
浏览记录
ID:43375865
大小:299.00 KB
页数:17页
时间:2019-10-08
《Struts扩展控制器及导航设置》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Struts扩展控制器及导航设置deli.wu@gmail.com教学目标Struts控制器的组成理解struts框架的初始化流程理解struts框架的响应客户请求的流程理解struts框架响应客户请求的流程Struts中定制前端控制器Struts中配置多模块开发Struts控制器的组成在Struts各种组件中最重要的组件就是控制器组件.Struts控制器组件的组成Struts控制器主要由ActionServlet组成,另外包含RequestProcessorAction及ActionForward三个辅助类.Strut
2、s多应用模块多应用模块是指同一个应用包含多个子应用,每个子应用可以处理相关的一组功能,例如:对于网上购物,可以由一个子应用来处理商品和商品目录信息.再由另一个子应用来处理购物车和订单信息.把应用划分为多个模块,可以简化应用的并行开发过程,缩短开发周期.在Struts中,所有的子应用都共享同一个ServletAction但是每一个子应用都有单独的配置文件和RequestProcesser实例.Struts多应用模块Struts框架的初始化流程Servlet容器会在ActionServlet被加载后立即执行它的init()方
3、法,以下是ActionServlet的init的执行过程分析:调用initInternal()方法,初始化所有在Struts框架中用到的消息资源,例如:日志,警告,错误信息等.调用initOther()方法,从web.xml中加载ActionServlet的初始化参数,例如:config等.调用initServlet()方法,从web.xml中加载ActionServlet的URL映射信息.Struts框架的初始化流程调用initModuleConfig()方法,加载并解析默认子应用模块的Struts配置文件,并创建Mo
4、duleConfig对象,并且将它存储在ServletContext中.调用initModuleMessageResource()方法,加载并初始化默认子应用模块的消息资源,并且建立MessageResources对象,并将它保存在ServletContext中.调用initModuleDataSource()方法,加载并实始化默认的子应用模块数据源,如果没有在struts的配置文件中配置元素,这一步将被忽略.调用initModulePlugins()方法,加载并初始化默认子应用模块的所有插件.
5、当默认的子应用模块初始化成功后,如果还有其它的子应用模块,ActionServlet将重复4到7的步骤,分别对其它子模块进行初始化.Struts框架的初始化流程Struts框架响应客户请求的流程Struts框架响应客户请求的流程当ActionServlet实例接收到HTTP请求后,在doGet()和doPost()方法中都会调用process()方法来处理请求.ModuleUtils.getInstance().selectModule(request,getServletContext());//选择请求相关的子应用模
6、块ModuleConfigconfig=getModuleConfig(request);//获取请求相关的配置文件RequestProcessorprocessor=getProcessorForModule(config);//获取请求相关的处理器if(processor==null){processor=getRequestProcessor(config);}processor.process(request,response);RequestProcesser的process()方法首先调用processMul
7、tipart()方法.如果Http请求的为Post方法,并且请求的Content-type的类型为mutipart/form-data,标准的HttpServletRequest将被重新封装以处理多数据体的Http请求,如果没有设定Content-type则直接返回HttpServletRequest对象.调用processPath()方法,获取请求的URI路径,该信息用于选择合适的Action组件调用processLocale()方法,当ControllerConfig中的locale属性为true时,将读取用户请求中
8、包含的locale信息,然后把locale信息保存在session范围内.调用processContent()方法,读取ControllerConfig中的contentType属性,然后调用response.setContentType(contentType)的方法设置响应的文档类型及字符编码.RequestPr
此文档下载收益归作者所有