文档介绍:Struts扩展控制器及导航设置
@
教学目标
Struts控制器的组成
理解struts框架的初始化流程
理解struts框架的响应客户请求的流程
理解struts框架响应客户请求的流程
Struts中定制前端控制器
Struts中配置多模块开发
Struts控制器的组成
在Struts各种组件中最重要的组件就是控制器组件.
Struts控制器组件的组成
Struts控制器主要由ActionServlet组成,另外包含
RequestProcessor Action 及 ActionForward三个辅助类.
Struts多应用模块
多应用模块是指同一个应用包含多个子应用,每个子应用可以处理相关的一组功能,例如:对于网上购物,.
把应用划分为多个模块,可以简化应用的并行开发过程,缩短开发周期.
在Struts中,所有的子应用都共享同一个ServletAction但是每一个子应用都有单独的配置文件和RequestProcesser实例.
Struts多应用模块
Struts 框架的初始化流程
Servlet容器会在ActionServlet被加载后立即执行它的init()方法,以下是ActionServlet的init的执行过程分析:
调用initInternal()方法,初始化所有在Struts框架中用到的消息资源,例如:日志,警告,错误信息等.
调用initOther()方法,,例如:config等.
调用initServlet()方法,.
Struts 框架的初始化流程
调用initModuleConfig()方法,加载并解析默认子应用模块的Struts配置文件,并创建ModuleConfig对象,并且将它存储在ServletContext中.
调用initModuleMessageResource()方法,加载并初始化默认子应用模块的消息资源,并且建立MessageResources对象,并将它保存在ServletContext中.
调用initModuleDataSource()方法,加载并实始化默认的子应用模块数据源,如果没有在struts的配置文件中配置<data-source>元素,这一步将被忽略.
调用initModulePlugins()方法,加载并初始化默认子应用模块的所有插件.
当默认的子应用模块初始化成功后,如果还有其它的子应用模块,ActionServlet将重复4到7的步骤,分别对其它子模块进行初始化.
Struts 框架的初始化流程
Struts 框架响应客户请求的流程
Struts 框架响应客户请求的流程
当ActionServlet实例接收到HTTP请求后,在doGet()和doPost()方法中都会调用process()方法来处理请求.
().selectModule(request, getServletContext());//选择请求相关的子应用模块
ModuleConfig config = getModuleConfig(request);//获取请求相关的配置文件
RequestProcessor processor = getProcessorForModule(config);//获取请求相关的处理器
if (processor == null) {
processor = getRequestProcessor(config);
}
(request, response);