Struts是web层的框架,主要用于页面流转的控制,但是如果你不知道它的执行过程,你就无法很好的驾驭它。本文将从Struts框架的执行过程的讲解,来让你更好的掌握它,并举一反三,来学习其他框架的使用。
首先,客户端发出http请求,根据web.xml文件的配置找到相应的action(servlet),调用action的doGet或者doPost方法。actionServlet会调用requestProcessor类的process方法。这个方法完成了一系列的操作。
1、processPath方法截取URL
该方法根据客户端http协议发送的URL进行截取,例如登陆中将截取/login.do
2、processMapping方法取得actionMapping
根据截取的url,到struts-config.xml中查询相关信息,并取得actionMapping(actionMapping是在什么时候生成的,配置文件中有设置。)
3、processActionForm方法取得actionform
根据actionMapping中的name,查找actionform,如果request中存在则返回,如果不存在就创建并放到scope中
4、processPopulated方法,设置数据到actionform
将request中的表单数据设置到一个map中,在将数据设置到actionform中
5、processactioncreate方法,获得action对象
根据action的类名称去map中查找,如果存在则返回,如果不存在则创建并放到Map中。单实例的,有线程安全问题。
6、processactionperform方法,执行execute方法,返回actionforward对象
7、processForwardConfig方法完成转向
通过上面的介绍,相信你已经了解了Struts的实现原理,那么,作为开发人员,我们如何快速的上手使用struts框架呢?
简单的说:
首先,我们在表单配置了访问路径,请求达到处理类(requestProcessor),处理类根据这个路径,会到struts-config.xml中找action,并把actionform和actionforward带到指定的action类中。
经过action处理,如获取数据,处理数据,将数据设置到scope中等,返回ActionForward.返回的ActionForward回到处理类.处理类将页面转向到ActionForward指定的页面。
下图是使用Rose类似时序图的形式,以图形来说明Struts的执行过程,通过图再次回顾。