java struts学习-拦截器

Posted Crazy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java struts学习-拦截器相关的知识,希望对你有一定的参考价值。

引言:

Struts2拦截器,每个拦截器类只有一个对象实例,即采用单例模式,所有引用这个拦截器的Action都共享这一拦截器类的实例,因此,在拦截器中如果使用类变量,要注意同步问题。

 

•       拦截器是在访问某个方法,字段之前或之后实施拦截。

•       拦截器是AOP的一种实现

•       拦截器栈(Interceptor Stack)

–      拦截器栈就是将拦截器按一定的顺序联结成一条链。

–      在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。

•       实现原理

–      Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对应拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。

 

代码详解

 1 //要实现自定义拦截器需要继承一个MethodFilterceptor类
 2 public class LoginInterceptor extends MethodFilterInterceptor{
 3    private Map<String,Object> session=null;
 4    protected String doIntercept(ActionInvocation actionInvocation) throws          Exception{
 5       session = ActionContext.getContext().getSession();
 6       Object use=session.get("user");
 7       if(user!=null){
 8           return actionInvocation.invoke();//允许通过
 9       }else{
10           return "login";
11       }
12     }
13 }
//在struts.xml配置文件中使用自定义的拦截器
<interceptors>
     //自定义拦截器栈
     <interceptor name="loginInterceptor" class="com.nf.action.LoginInterceptor"></interceptor>
     <interceptor-stack name="myStack">
         <interceptor-ref name="loginInterceptor">
                  <param name="excludeMethods">loginView,login</param> //excludeMethods表示排除指定的方法,即不对标记为excludeMethods的方法进行拦截,
         </interceptor-ref>
     </interceptor-stack>
</interceptors>
//配置一个默认拦截器,也就是所有的Action都会被拦截,除了param-->
<default-interceptor-ref name="myStack">

 

以上是关于java struts学习-拦截器的主要内容,如果未能解决你的问题,请参考以下文章

java struts学习-拦截器

[原创]java WEB学习笔记70:Struts2 学习之路-- struts2拦截器源码分析,运行流程

[原创]java WEB学习笔记64:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

struts2学习笔记拦截器

Struts2学习:interceptor(拦截器)的使用