Struts2工作原理详解
- 用户发出一个HttpServletRequest请求给AcrionMapper(只有action后缀的才能到ActionMapper,查询有没有指定的action)
- AcrionMapper查找当前的请求有没有一个指定的action,如果有就通过过滤器StrutsPrepareAndExecuteFilter(StrutsPrepareAndExecuteFilter可以在执行action之前添加自己的过滤器)把该请求转交给ActionProxy处理。
- ActionProxy通过配置管理器Configuration Manager询问框架的配置文件struts.xml,从而找到需要调用的Action类。
- ActionProxy代理创建一个ActionInvocation的实例,该实例使用命名模式来调用。在Action执行的前后,ActionInvocation实例根据配置文件加载与Action相关的所有拦截器Interceptor。
- 一旦Action执行完毕,ActionInvocation实例根据struts.xml文件中的配置找到相应的返回结果。返回结果通常是一个JSP或者FreeMarker的模板。
- 最后,HttpServletResponse响应通过web.xml文件中配置的过滤器返回。