1、新建一个类PowerInterceptor实现了Interceptor接口(或者直接继承自AbstractInterceptor)
package com.luo.action.interceptor; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class PowerInterceptor implements Interceptor { private static final long serialVersionUID = 1L; private String sessionName; private String includeName; private List<String> nameList; public void destroy() { } public void init() { nameList=getIncludeNameList(); System.out.println("拦截器初始化:"+nameList.size()); } public List<String> getIncludeNameList(){ List<String> list=new ArrayList<String>(); if(includeName!=null&&!includeName.trim().equals("")){ String[] names=includeName.trim().split(","); for (String name : names) { list.add(name); } } return list; } public String intercept(ActionInvocation invocation) throws Exception { String actionname=invocation.getProxy().getActionName(); if(nameList.contains(actionname)){ return invocation.invoke(); }else{ Map<String,Object> session=invocation.getInvocationContext().getContext().getSession(); if(session.get(sessionName)==null){ return "notLogin"; }else{ return invocation.invoke(); } } } //get set public void setSessionName(String sessionName) { this.sessionName = sessionName; } public void setIncludeName(String includeName) { this.includeName = includeName; } }
权限拦截器主要是不同的url访问时根据是否进行了登录,即是否有session的存在进行拦截。其中有的需要拦截,有的不需要有session也可以访问,比如首页index和跳转到登录页面的action都不需要拦截。
所以这里的变量sessionName是你定义的session中的key ,includeName 是一个以逗号分割的字符串用来存放哪些action是不需要被拦截的。他们的配置在struts.xml文件中:
<package name="ssh" extends="struts-default"> <interceptors> <interceptor name="powerInterceptor" class="com.luo.action.interceptor.PowerInterceptor"> <param name="sessionName">currentUser</param> <param name="includeName">login,userLogin</param> </interceptor> <interceptor name="mytimer" class="com.luo.action.interceptor.MyTimerInterceptor"></interceptor> <interceptor-stack name="mystack"> <interceptor-ref name="powerInterceptor"/> <interceptor-ref name="mytimer"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="mystack"></default-interceptor-ref> <global-results> <result name="notLogin" type="redirectAction">login.do</result> </global-results>
在interceptors这个节点下面我新配置了自己的powerInterceptor ,他需要有两个参数sessionName ,includeName 。sessionName 在你登录的代码中,登录成功则把当前用户名放到session中,其中的key就是sessionName。
由于要使用自己的拦截器,所以需要新建一个拦截器栈 interceptor-stack,里面用到了默认的defaultStack 和我自己的powerInterceptor 。
为了使拦截器生效,我让我系统默认的拦截器为mystack
相关推荐
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
简单的拦截器例子,适合初学者学习,也是一个备忘录
STRUTS2:拦截器Interceptor
struts2 拦截器_教程.zip
struts2 Interceptor拦截器 http://whitewolf.0fees.net
struts2,Interceptor struts2拦截器实例,两套实例,一套是针对单个的action配置的,另一套实例是针对全局的action配置的拦截器interceptor
Struts2.3.6实现自定义拦截器Interceptor http://blog.csdn.net/alanchen520/article/details/34086699
利用反射和动态代理机制实现自定义拦截器Interceptor http://blog.csdn.net/alanchen520/article/details/34087833
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器 三、定义Struts2拦截器。 ...
综合使用servlet filter与struts2 interceptor对权限进行验证。
创建自己struts2拦截器,手工创建自己的拦截器实现
Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
jfinal中拦截器(Interceptor)的参数注入jfinal中拦截器(Interceptor)的参数注入
拦截器是一种AOP(面向切面编程)思想的编程方式.它提供一种机制是开发者能够把相对独立的代码抽离出来,...下面这篇文章主要给大家介绍了关于Struts2拦截器Interceptor的原理与配置的相关资料,需要的朋友可以参考下。
使用Struts2实现用户权限拦截、重点是掌握拦截器的使用和配置方法,通过案例的学习,就能掌握struts中拦截器的使用方法,让我们能快速上手
NULL 博文链接:https://johnson2132.iteye.com/blog/720398
比如在登入一个页面时,如果要求用户密码、权限等的验证,就可以用自定义的拦截器进行密码验证和权限限制。对符合的登入者才跳转到正确页面。这样如果有新增权限的话,不用在Action里修改任何代码,直接在Interceptor里...
在struts2中使用拦截器(Interceptor)控制登录和权限[汇编].pdf
详细介绍struts2 interceptor
本篇文章主要介绍了详解Retrofit Interceptor(拦截器) 拦截请求并做相关处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧