Struts2 自定义拦截器

本文介绍如何在Struts2框架中实现自定义拦截器,包括创建自定义拦截器类、实现Action接口的Action类及配置struts.xml文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.自定义一个实现Interceptor的自定义拦截器类

package cn.gh.interceptor.myinter;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

import java.util.Map;

/**
 * Created by guo on 2017/10/25.
 */
public class myinterseptor implements Interceptor {
    public void destroy() {

    }

    public void init() {
        System.out.println("自定义拦截器已启动--------");
    }

    public String intercept(ActionInvocation actionInvocation) throws Exception {
        System.out.println("对象"+actionInvocation);
        Object action = actionInvocation.getAction();
        System.out.println("action是:======="+action);
        String value;
        //判定Session里的值是否存在
        Map<String, Object> session = ActionContext.getContext().getSession();
        Object uname = session.get("uname");
        String actionName = actionInvocation.getProxy().getActionName();
        actionInvocation.getProxy().getNamespace();//user
        System.out.println("actionName========"+actionName);
        if("login".equals(actionName)){
            System.out.println("actionName是login==============");
            value=actionInvocation.invoke();
        }else if(uname!=null){
            value=actionInvocation.invoke();
            String method = actionInvocation.getProxy().getMethod();
            System.out.println("已经登陆,执行的方法是"+method);
        }else {
            value="login";
        }
        return value;
    }
}
2.写一个实现Action接口的action类

package cn.gh.interceptor.action;

import cn.gh.entity.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.util.ValueStack;

import java.util.Map;

public class UserAction implements Action, ModelDriven {

    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String execute() throws Exception {
        Map<String, Object> session = ActionContext.getContext().getSession();
        if (user!=null) {
            if (user.getUsername().equals("1")&&user.getPassword().equals("1")) {
                //省略一个步骤,记录session
                session.put("uname",user.getUsername());
                return SUCCESS;
            }else {
                return LOGIN;
            }
        }else {//不是从页面过来的
            if (session!=null&&session.get("uname")!=null) {
                return "success";
            }else {
                System.out.println("Action中的自定义代码");
                return "login";

            }
        }
    }


    public User getModel() {
        return user;
    }
}
3.写自己的strutsxml文件

<?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="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="myinter" class="cn.gh.interceptor.myinter.myinterseptor"></interceptor>
            <interceptor-stack name="mystack">
                <interceptor-ref name="defaultStack"></interceptor-ref>
                <interceptor-ref name="myinter"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="mystack"></default-interceptor-ref>
        <global-results>
            <result name="login">/login.jsp</result>
        </global-results>
      <!--  <action name="userAction" class="cn.gh.action.UserAction">
            <result name="success">/success.jsp</result>
        </action>-->
    </package>
   <!-- <include file="struts-02.xml"></include>
    <include file="struts-03.xml"></include>
    <include file="struts-04.xml"></include>
    <include file="struts-05.xml"></include>-->
    <include file="struts-06.xml"></include>



</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="action06" namespace="/" extends="default">


        <action name="success" class="cn.gh.interceptor.action.SuccessAction">
            <result name="success">/success.jsp</result>
        </action>
        <action name="login" class="cn.gh.interceptor.action.UserAction">
            <result name="success">/success.jsp</result>
            <result name="login">/login.jsp</result>
        </action>

    </package>
</struts>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值