拦截器

1.Struts2 拦截器

  Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

2.拦截器的工作原理

  就是你的服务请求request 要穿过struts2的拦截器,满足条件的就通过,不然就被拦截 

  • 客户端发送请求 (客户端初始化一个指向Servlet容器(如Tomcat)的请求)
  • 请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh等),ActionContextCleanUp-->FilterDispatcher
  • FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action
  • 如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
  • ActionProxy通过ConfigurationManager询问Struts配置文件(Struts.xml),找到需要调用的Action类。
  • ActionProxy创建一个ActionInvocation的实例
  • ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用(interceptor)
  • Action执行完毕,ActionInvocation创建Result并返回,返回结果前要做些动作也是可以的

3.拦截器配置

  • 通过<interceptor...>元素来定义拦截器
  • 通过<interceptor-ref.../>元素来使用拦截器

4.Struts2 内置拦截器

  • perams拦截器
  • staticParams 拦截器
  • servletConfig 拦截器
  • fileUpload 拦截器
  • validation 拦截器
  • workflow 拦截器
  • exception 拦截器

5.自定义拦截器

  • 实现 Interceptor 接口
  • 继承AbstracInterceptor 类

6.Struts2 实现文件上传

  需要添加两个jar文件

    commons-fileupload-xxx.jar

    commons-io-xxx.jar

  步骤:

    • 首先编写Action类
    • struts2.xml相应的action配置

    • 最后配置相应的jsp页面

 7.文件下载  

  • 定义InputStream
  • 配置stream 结果类型

    

原文地址:https://www.cnblogs.com/QQW-HH/p/7644913.html