◆当Servlet容器启动后,ActionServlet被加载就立即执行init()方法。下面是inti()方法初始化的流程:
(1)调用initInternal(),初始化框架内在的消息资源,如系统日志相关的通知,警告和错误消息。
(2)调用initOther()方法,从web.xml文件中加载ActionServlet的初始化参数,例如config参数
(3)initServlet()方法,从web.xml文件中加载ActionServlet的URL映射信息。此外还会注册web.xml和struts配置文件所使用的DTD文件,用来验证web.xml和Struts配置文件的语法
(4)调用initModuleConfig(),加载并且解析默认子应用模块的Struts配置文件,创建ModuleConfig对象,把它存在ServletContext中。
(5)调用initModuleMessageResources(),加载子应用模块的消息资源,创建MessageRources对象,存在ServletContext中。
(6)调用initModuleDataSources(),加载数据源
(7)调用initModulePlugins(),加载默认的子应用模块的所有插件
(8)当默认的子应用模块被成功的初始化以后,如果还包括其他子应用模块,将流程重复(4)~(7)
◆无论用户是以何种方式请求,ActionServlet将会在process()方法中来处理请求。
ModuleUtils.getInstance().selectModule(request,getServletContext());
getRequestProcessor(getModuleConfig(request)).process(request,response);
第一步:选择当前处理的子模块,将与之对应的ModuleConfig和MessageResources对象存在request范围中,这样其余的组件就可以读取这些对象,获得应用配置信息和消息资源
第二步:获得RequestProcessor类的实例,再调用RequestProcessor的process()方法来完成预处理的请求
◆Destroy()方法,销毁ActionServlet
struts-ActionServlet
最新推荐文章于 2022-12-21 17:25:47 发布