struts2介绍

Struts2框架处理请求的几个步骤

  1. 客户端浏览器发送请求
  2. 这个请求经过一系列的过滤器filter 这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器。这个过滤器对于Struts2和其他框架的集成很有帮助,例如SiteMesh Plugin
  3. filterDispatcher(StrutsPrepareAndExecuteFilter)被调用,FilterDispatcher(StrutsPrepareAndExecuteFilter)询问ActionMapper来决定这个请求是否需要调用某个Action;
  4. 如果ActionMapper决定调用某个Action,FileterDispatcher(StrutsPrepareAndExecuteFilter)把请求的处理交给ActionProxy;
  5. ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
  6. ActionProxy创建一个ActionInvocation的实例。
  7. ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器Intercepter的调用。
  8. 一旦Action执行完毕ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是一个需要被表示的JSP或者FreeMarker的模板。在表示的过程中可以使用Struts2框架中继承的标签,在这个过程中需要涉及到ActionMapper;

简单概括:浏览器发送请求,经过一系列的过滤器后,到达核心过滤器(StrutsPrepareAndExecuteFilter); StrutsPrepareAndExecuteFilter通过ActionMapper判断当前的请求是否需要某个Action处理,如果不需要,则走原来的流程。如果需要,则把请求交给ActionProxy来处理。ActionProxy通过Configuration Manager 询问框架的配置文件Struts.xml,找到需要调用的Action类;创建一个ActionInvocation实例,来调用Action的对应方法,获取结果集的name,在调用前后会执行相关拦截器。通过结果集的Name找到对应的结果集来对浏览器进行响应。

Struts2中的拦截器
Java中的拦截器是动态拦截Action调用的对象,它提供了一种机制可以是开发者可以定义一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中重要部分的方式。
在AOP中拦截器用于某个方法或字段被访问之前,进行拦截然后 在之前或者之后加入某些操作。
struts2中的功能(参数处理、文件上传、字符编码等)都是通过系统拦截器实现的。
如果业务需要,我们也可以自定义拦截器,进行可插拔配置,在执行action的方法前后,加入相关逻辑完成业务。
使用场景:
1、用户登录判断,在执行action的前面判断是否已经登录。如果没有登录就跳转到登录页面。
2、用户权限判断,在执行action的前面判断是否具有,如果没有权限就给出提示。
3、操作日志。

猜你喜欢

转载自blog.csdn.net/lanselianyu/article/details/89516199