最近看看了有关struts1的资料文章,于是小弟不才,自己也来个小小的总结,希望和我一样的初学者能通过我的文章学习到一些知识,相互交流
1.struts的工作流程:
通过web.xml加载org.apache.struts.action.ActionServle,进行struts核心控制器的初始化工作,初始化过程中读取struts-config.xml,加载不同的 ModuleConfig对象。
比如配置文件中的Action映射定义都保存在ActionConfig集合中。相应地有ControlConfig集合、FormBeanConfig 集合、ForwardConfig集合和MessageResourcesConfig集合等。
控制器接受到HTTP请求之后,通过ActionConfig,通过path找到相应的action,如果没有相应的action,控制器会直接将请求转发到JSP或者静态页面,否则控制器会通过控制分发转发到相应的action类进行处理。
在action执行execute方法之前首先会通过actionForm 进行填充,在HTTP提交请求的时候,页面提交所有的属性都会通过form 保存到actionForm中。 这个时候可以通过actionForm 中的validate方法进行格式验证。之后会通过actionMapping 进行控制转发跳转。
action其实主要是作为一个中间桥梁,作为JSP页面和javabean的中间交换。祈祷一个控制转发作用。
2模块开发:
在应用struts的时候我们都在运用大量的struts-config.xml在处理我们的action转发,项目模块的不断增加我们可以进行模块化的配置,加载不同的struts-config.xml
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml, /WEB-INF/struts-config-registration.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
3.ActionServlet:
作为struts的核心控制器,当初始化后进行,请求之后,会调用其中的
process方法进行每个方法的调用器:
protected void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
ModuleUtils.getInstance().selectModule(request, getServletContext());
ModuleConfig config = getModuleConfig(request);
RequestProcessor processor = getProcessorForModule(config);
if (processor == null) {
processor = getRequestProcessor(config);
}
processor.process(request, response);
}
引用与部分内容。http://www.ibm.com/developerworks/cn/java/l-struts1-1/#author