Struts学习(1)-----Struts的工作流程

在学习struts之前,本人使用的是jsp+servlet进行WEB应用的开发,随着应用功能的扩大,使用jsp+servlet开发的不便就显示了出来,servlet的存在虽然可以帮助用户解决大部分问题,但是由于它们的编码对项目的开发带来了许多的不方便,可重用性也差,所以struts应运而生,帮助用户在最短的时间内解决这些问题。Struts框架提供如下服务:

(1)作为控制器的Servlet。

(2)提供大量的标签库。

(3)提供了用于国际化的框架,利用不同的配置文件,可以帮助用户选择合适自己的语言。

(4)提供了JDBC的实现,来定义数据源和数据库连接池。

(5)XML语法分析工具。

(6)文件下载机制。

首先,我想总结下struts的工作流程。


Struts学习(1)-----Struts的工作流程_第1张图片
struts的框架结构图

刚开始看这张图一定是很懵逼的,不过在打了一个简单的拦截器例子后我再回头看已经有点 清晰了。

1,、客户端发送一个HttpServletRequest请求,如在浏览器中输入http://127.0.0.1:82/struts/login就    是提交一个(HttpServletRequest)请求。

2、这个请求经过一系列的过滤器(filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。

3、FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy

4、ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。例如,用户注册示例将找到UserReg类

5、ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。

6、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result

7、最后通过HTTPServletResponse返回客户端一个响应。

你可能感兴趣的:(Struts学习(1)-----Struts的工作流程)