码迷,mamicode.com
首页 > 其他好文 > 详细

struts2 过滤器学习

时间:2014-08-12 13:04:14      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   使用   io   ar   art   

 

 作用:在访问action前,后 拦截,验证或进行相应处理。本人使用拦截器是要实现登录验证功能,在访问每个action前,验证是否存在用户session

1. 编写struts2 web.xml

<struts>
    <constant name="struts.devMode" value="true" /><!-- 开发者模式-->
    <constant name="struts.multipart.maxSize" value="50000000" /><!--设置最大上传限制,默认不超过2m(具体不清楚)-->
    <package name="test" extends="struts-default" namespace="/">
        
             <!-- 定义一个拦截器 -->  
        <interceptors>  
            <interceptor name="authority"    class="com.zzbj.util.LoginInterceptor">  
            </interceptor>  
            <!-- 拦截器栈 -->  
            <interceptor-stack name="mydefault">  
                <interceptor-ref name="defaultStack" /> 
                <interceptor-ref name="authority" />  
            </interceptor-stack>  
        </interceptors>        
        <default-interceptor-ref name="mydefault"/> <!--定义为默认拦截器,全局拦截,也可以针对action 定义拦截器-->      
        <!-- 定义全局Result -->  
        <global-results>  
            <!-- 当返回login视图名时,转入/login.jsp页面 -->  
            <result name="login">/index.jsp</result>  
          <!--后面三个是捕获action throws Exception-->
<result name="sql">/Error.jsp</result> <result name="invalidinput">/Error.jsp</result> <result name="naming">/Error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="sql" exception="java.sql.SQLException"></exception-mapping> <exception-mapping result="invalidinput" exception="cn.codeplus.exception.InvalidInputException"></exception-mapping> <exception-mapping result="naming" exception="javax.naming.NamingException"></exception-mapping> </global-exception-mappings> <action name="user_*" class="com.zzbj.action.UserAction" method="{1}"> <result>/UserManage.jsp</result> </action> </package> </struts>


2. 自定义拦截器com.zzbj.util.LoginInterceptor

 1 public class LoginInterceptor extends AbstractInterceptor {   
 2     @Override  
 3     public String intercept(ActionInvocation invocation) throws Exception {  
 4         System.out.println("映射");
 5         // 取得请求相关的ActionContext实例  
 6         ActionContext ctx = invocation.getInvocationContext();  
 7         Map session = ctx.getSession();  
 8         String userRule = (String) session.get("RULE");  
 9         // 如果没有登陆,或者权限rule首位不为1(没有该类权限),都返回重新登陆  
10         if (userRule != null && userRule.charAt(0)==1) {  
11             System.out.println("已登录");  
12             return invocation.invoke();  
13         }  
14         ctx.put("return", "你还没有登录");  
15         return Action.LOGIN;  
16     }    
17 } 


最后bug 出现在我是使用的struts2,servlet 共存,所以 struts2 在web.xml中url-pattern 过滤的不是所有而是*.aciton   *.jsp.悲剧的发现对直接登录jsp页面毫无作用,决定使用servlet 的过滤器

struts2 过滤器学习,布布扣,bubuko.com

struts2 过滤器学习

标签:style   blog   color   java   使用   io   ar   art   

原文地址:http://www.cnblogs.com/sjzq/p/3906693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!