Struts2拦截器

基本过程

1.用户请求数据封装进request对象

2.所有请求都要经过核心过滤器。

3.filter调用动作映射类,确认是否要调用某个action类

4.返回确认信息

5.创建动作类的代理类

6.manager读取配置文件,确定执行方法

7.返回确认信息

8.执行动作类之前执行一系列拦截器

9.执行动作方法

10.根据返回类型结果视图

11.执行一系列拦截器的后处理

12.封装响应到response对象

-------------

核心接口和类

Action Mapper 根据请求的URI查找是否存在对应Action调用

ACtion Mapping 保存调用Action的映射信息,如namespace、name等

Action Proxy 再Xwork和真正的Action之间充当代理

Action Invocation 表示Action的执行状态,保存拦截器、Action实例。

Interceptor 再请求处理之前或者之后执行的Struts2组件

 ----------

什么是拦截器:

Struts2大多核心功能通过拦截器实现,每个拦截器完成某项功能

拦截器方法再Action执行之前或者执行之后执行

拦截器栈

·从结构上看:拦截器相当于多个拦截器的组合

·在功能上看:拦截器栈也是拦截器

拦截器与过滤器原理很相似

拦截器工作原理:拦截器的执行过程是一个递归的过程。

三阶段执行周期:

1、做一些Action执行前的预处理

2、将控制交给后续拦截器活返回结果字符串

3、做一些Action执行后的处理

------------

简单应用:继承AbstractInterceptor类,重写intercept()方法(括号中 ActionInvocation Invocation)

String result = invocation.invoke(); //invoke代表放行

//定义单个拦截器

<interceptors>

   <interceptor name="""

  class=""com.pb.interceptor.MyTimerInterceptor">

</interceptor>

</interceptors>

<interceptor-ref name=""></interceptor -ref> //引用拦截器

params拦截器

负责将请求参数设置为Action属性

ServletConfig拦截器

将源文件于Servlet API的各种对象注入到Action

fileUpload拦截器

对文件上传提供支持

exception拦截器

捕获异常,并且将异常映射到用户自定义的错误页面

validation拦截器

调用验证框架进行数据验证

workflow拦截器

调用Action类的validate(),执行数据验证

ServletRequestAware接口

获取Action的一种方式

文件上传:

Commons-FileUpload组件

 apache开放源代码组织的一个子项目,此组建用来处理HTTp文件上传的子项目

特点:使用简单,可以方便嵌入到JSP文件中,编写少量代码即可完成文件的上传功能

能完全控制上传的内容

能对上传文件的大小、类型进行控制。

设置表单提交属性<from enctype="multipart/form-data" method="post">

原文地址:https://www.cnblogs.com/legiorange/p/8578401.html