zoukankan      html  css  js  c++  java
  • struts2 自定义拦截,防止非法操作

    <package name="defaults" extends="struts-default">
        
            <interceptors>
                <interceptor name="login"
                    class="com.zqgame.interceptor.CheckLoginInterceptor" />
                <interceptor-stack name="myinterceptor">
                    <interceptor-ref name="login">
                        <param name="excludeMethods">validateLogin</param>
                    </interceptor-ref>
                    <interceptor-ref name="defaultStack" /> 
                </interceptor-stack>
            </interceptors>
            <!-- 设置所有Action自动调用的拦截器堆栈 -->
            <default-interceptor-ref name="myinterceptor"></default-interceptor-ref>
            <global-results>
                <result name="error">/err/exception.jsp</result>
                <result name="message">/err/message.jsp</result>
            </global-results>
            
            <global-exception-mappings>
                <exception-mapping exception="java.lang.NullPointerException" result="error" />
                <exception-mapping exception="java.lang.Exception" result="error" />
            </global-exception-mappings>
        </package>

    action配置里面继承defaults:

    <package name="login" namespace="/login" extends="defaults">
            <action name="login_*" class="loginAction" method="{1}">
            
            </action>
        </package>

    拦截器类实现:

    public class CheckLoginInterceptor extends MethodFilterInterceptor {
        
        private Logger log = LoggerFactory.getLogger(CheckLoginInterceptor.class);
    
        private static final long serialVersionUID = 1L;
    
        @Override
        protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
            // 确认Session中是否存在LOGIN
            Map<String,Object> session = actionInvocation.getInvocationContext().getSession();
            String login = (String) session.get(SysKey.Login_Key);
            if (login != null && login.length() > 0) {
                // login不为null,登录session有效。
                return actionInvocation.invoke();
            } else {
                // 否则非法操作,返回LOGIN
                log.debug("no login, forward login page!");
                return PageCode.Login;
            }
        }
     }
  • 相关阅读:
    iOS:不同属性声明方式的解析
    iOS:图像和点击事件
    iOS:NAV+TABLE结合
    iOS:实现表格填充和选择操作
    iOS: 填充数据表格
    iOS:导航栏的工具条和导航条
    iOS:使用导航栏
    hello,world不使用ARC
    iOS代码实现:创建按钮,绑定按钮事件,读取控件值
    iOS版 hello,world版本2
  • 原文地址:https://www.cnblogs.com/quyongjin/p/3848159.html
Copyright © 2011-2022 走看看