Struts1 的工作流程如下:
struts框架是干什么的我们学过struts1 的时候。有两个类让我们印象深刻:其中
(1)用户的请求以HTTP方式传输到服务器上,接受请求的是ActionServlet.
(2)ActionServlet接收到请求后,会查l文件来确定服务器上是否有用户请求的操作
(3)当ActionServlet请求到用户请求的Action后,首先将用户输入的表单参数打包成一个ActionFrom对象,这个ActionFrom对象其实也就是一个JavaBean,接着ActionServlet 再根据l中的配置信息决定是否要执行ActionFrom对象中的Validate方法。若Validate方法执行有错,则返回。否则,继续下一步。
(4)系统生成一个用户所请求的Action的实例对象,将前面的ActionFrom对象传递给它,运行它的Execute()方法。这一步其实就是用户登陆的控制器,在执行exectue()方法时,可以调用后台模型验证登陆名和密码是否正确等信息。
(5)execute()执行结束前会生成以和ActionForward类型的对象并将之返回给ActionServlet,该对象的作用是告诉ActionFroward就代表跳转到一个登陆成功的页面。ActionServlet将对之进行分析,其实就相当于接收到一个新的请求,重复(2)~(5)的过程,直到将某个界面返会给用户为止!
以上就是STRUTS的基本工作流程。
请求在Struts2框架中的处理大概分为以下几个步骤:
1 客户端初始化一个指向Servlet容器的请求;
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp 的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,到需要调用的Action 类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据l中的配置到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP 或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper