• 自定义拦截器


     1 package com.cn.interceptors;
     2 
     3 import javax.servlet.http.HttpSession;
     4 
     5 import org.apache.struts2.ServletActionContext;
     6 
     7 import com.cn.domain.User;
     8 import com.opensymphony.xwork2.ActionInvocation;
     9 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
    10 //执行动作方法前检查用户是否已经登录
    11 public class SessionCheckInterceptors extends MethodFilterInterceptor{
    12 
    13     @Override
    14     protected String doIntercept(ActionInvocation invocation) throws Exception {
    15         String result = "login";//对应的就是一个结果(即action的结果配置:<result name="login">/login.jsp</result>)
    16         HttpSession session = ServletActionContext.getRequest().getSession();
    17         User user = (User)session.getAttribute("user");
    18         if(user!=null)
    19             result = invocation.invoke();
    20         return result;
    21     }
    22     
    23 }

    在Struts配置文件中进行配置:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <constant name="struts.devMode" value="true"></constant>
        
        <package name="mypackage" extends="struts-default" abstract="true">
            <interceptors>
                <interceptor name="sessionCheck" class="com.cn.interceptors.SessionCheckInterceptors">
                    <!-- 说明test2动作方法不需要拦截(这里是指action的method方法) -->
                    <param name="excludeMethods">test2</param>
                </interceptor>
                <interceptor-stack name="myDefaultStack">
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                    <interceptor-ref name="sessionCheck"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
        </package>
        
        <package name="p1" extends="mypackage">
            <action name="test1" class="com.cn.action.HelloAction1" method="test1">
                <result>/1.jsp</result>
                <result name="login">/login.jsp</result>
            </action>
            <action name="test2" class="com.cn.action.HelloAction1" method="test2">
                <result>/2.jsp</result>
            </action>
        </package>
    </struts>
  • 相关阅读:
    内存分配略谈
    变量声明顺序和指针偏移问题示例
    解决You have to be inside an Angular CLI project in order to use the serve command
    Linux中将命令放到全局
    Linux设置vim显示行号
    根据指定的excel模板导出数据
    解决 Maven工程运行报错Failed to clean project: Failed to delete
    springcloud工作用常用到的一些注解
    cmd窗口备份mysql数据库
    调用存储过程msql
  • 原文地址:https://www.cnblogs.com/lzy1991/p/5348594.html
Copyright © 2020-2023  润新知