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 结果类型