MethodBeforeAdvice前置拦截
3个问题1:做权限验证,我的用户权限是存储在session里的,是否登录的标示也在session里,请问在拦截器里怎么验证权限(是否登录),我得不到session啊2:用户登录后,如果权限等不存到session/cookie里,有其它办法可以解决吗?
2:重复提交,怎么防止重复提交?

解决方案 »

  1.   

    好像权限验证,用around拦截好一点吧
      

  2.   

    http://blog.csdn.net/zhangjihao/archive/2008/12/17/3541896.aspx
    楼主看看这个,可能对你有帮助
      

  3.   

    防重复提交,sendRedirect("mypage.do"); 
    http://topic.csdn.net/u/20080109/00/f44319f4-1b3d-43e4-8d6e-e768b6b10f5a.html
      

  4.   

    javascript ,设置一个变量,只允许提交一次。 
    <script language="javascript">   
        var checkSubmitFlg = false;   
        function checkSubmit() {     
            if (!checkSubmitFlg) { 
            checkSubmitFlg = true;     
            return true;  
            }else{
             alert("不能重复提交");
             return false;
            }
         }
    </script><form action="XXXX" method="POST"   onsubmit="return     checkSubmit()">
      内容:<input type="text" name="content" value=""/><br>
      <input type="submit" value="提交"><br>
    </form> 
      

  5.   

    你把session放线程变量你吧,
    写个threadlocal,即使你用 web 层 和服务层(EJB,CORBA)之类的,threadlocal里面的东东取出来通过接口也是好传的。
      

  6.   

    1. 如果要验证用户是否登陆或 session 是否失效要用到 手动配置一个拦截器实现 AbstractInterceptor 抽象类. 并且重写 intercept 这个方法
       
       例如:
       public String intercept(ActionInvocation invocation) throws Exception {
    Object obj = invocation.getInvocationContext().getSession().get("sessionAdmin");
    if(IsNull.isNull(obj)){//返回管理员登录页面
    return "adminLogin";
    } else {
    return invocation.invoke();
    }
    }
    2. 用户登录后,如果权限等不存到session/cookie里, 可以存在 application 应用程序作用域里面.3. 建议使用 4 楼的方法比较方便,不知行不行.   <script language="javascript">   
        var checkSubmitFlg = false;   
        function checkSubmit() {     
            if (!checkSubmitFlg) { 
            checkSubmitFlg = true;     
            return true;  
            }else{
             alert("不能重复提交");
             return false;
            }
         }
    </script>
      

  7.   


    请问,AbstractInterceptor是struts2里的东西吗?我用struts1,要怎么实现
      

  8.   

    你用struts1的话,那只能用filter来实现了用户登陆拦截的情况,登陆后给已登录的session赋个登录状态,比如web登录用1,客户端IM登录用2,手机登陆用3重复提交的问题你可以加个验证码来实现,或者根据固定session来实现
      

  9.   

    <script language="javascript">   
        var checkSubmitFlg = false;   
        function checkSubmit() {     
            if (!checkSubmitFlg) { 
            checkSubmitFlg = true;     
            return true;  
            }else{
             alert("不能重复提交");
             return false;
            }
         }
    </script><form action="XXXX" method="POST"   onsubmit="return     checkSubmit()">
      内容:<input type="text" name="content" value=""/><br>
      <input type="submit" value="提交"><br>
    </form> 
    sendRedirect("**.do");