一、客户端发出一个指向 Servlet 容器(例如Tomcat)的请求。编程
二、这个请求会通过几个过滤器 Filter(ActionContextCleanUp 可选过滤器、其余 Web 过滤器如 SiteMesh 等),最后到达 FilterDispatcher 过滤器。设计模式
三、接着 FilterDispatcher 过滤器被调用,FilterDispatcher 询问 ActionMapper 来决定这个请是否须要调用某个 Action。浏览器
四、若是 ActionMapper 决定须要调用某个 Action,FilterDispatcher 把请求的处理交给 Action 对象的代理(ActionProxy)。app
五、ActionProxy 经过配置管理器(Configuration Manager)读取框架的相关配置文件(struts.xml 以及它包含的 *.xml 配置文件),找到须要调用的 Action 类。框架
六、找到须要调用的 Action 类后,ActionProxy 会建立一个 ActionInvocation 的实例。编码
七、ActionInvocation 在调用 Action 的过程以前,会先依次调用相关配置拦截器(Intercepter),执行结果返回 结果字符串。spa
八、ActionInvocation 负责查找 结果字符串 对应的 Result,而后执行这个 Result,再返回对应的结果视图(如JSP等等)来呈现页面。设计
九、再次调用所用的配置拦截器(调用顺序与第7步相反),而后响应(HttpServletResponse)被返回给浏览器。代理
一、Struts2 是非侵入式设计,即不依赖于Servlet API 和 Struts API.xml
二、Struts2 提供了强大的拦截器,利用拦截器能够进行 AOP编程(面向切面的编程),实现如权限拦截等功能。
三、Struts2 提供了类型转换器,能够很方便地进行类型转换,例如将特殊的请求参数转换成须要的类型。
四、Struts2 支持多种表现层技术,如 JSP、FreeMarker、Vectocity 等。
五、Struts2 的输入验证能够对指定的方法进行验证。
参考:
https://www.lanqiao.cn/courses/reports/1372104/