拦截器

public class MyInterceptor implements Interceptor{
    public void destroy() {

    }

    public void init() {
        System.out.println("拦截器已经成功初始化。。。。。");
    }

    public String intercept(ActionInvocation actionInvocation) throws Exception {
        System.out.println("对象"+actionInvocation);
        //Action是谁
        Object action = actionInvocation.getAction();
        System.out.println("action======"+action);

        String value;
        //判定session里面key值对应的value是否存在
        Map<String,Object> session= ActionContext.getContext().getSession();
        Object name = session.get("uname");
        String actionName = actionInvocation.getProxy().getActionName();
        actionInvocation.getProxy().getNamespace();//user

        System.out.println("actionName====="+actionName);
        if(actionName.equals("login")){
            System.out.println("=============Action是Login");
            //user/login.acton
            value=actionInvocation.invoke();
        }else if(name!=null){
            //已经登录了  放行
            value=actionInvocation.invoke();
            String method = actionInvocation.getProxy().getMethod();
            System.out.println("方法"+method);
        }else{
            //走到这个else,证明你访问的Action,既不是登录,也不是被授权访问的操作
            value="login";
        }
        System.out.println("逻辑视图名"+value);
        return value;
    }
}

public class LoginAction implements Action{
    private UserInfo 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 UserInfo getUser() {
        return user;
    }

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

public class BookAction implements Action{
    public String execute() throws Exception {
        System.out.println("bookaction");
        return SUCCESS;
    }
}

主配置文件中

        <!--拦截器-->
        <interceptors>
            <interceptor name="myInter" class="cn.happy.day07Interceptor.Interceptor.MyInterceptor"></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>

        <default-action-ref name="first">/WEB-INF/myinter/login.jsp</default-action-ref>

        <!--<global-results>
            <result name="login"></result>
        </global-results>
        --><!--   或者value="login";-->
        <action name="first"></action>

附配置文件中

<?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="day07" namespace="/" extends="default">
        <action name="login" class="cn.happy.day07Interceptor.action.LoginAction">
            <result name="success">/WEB-INF/myinter/success.jsp</result>

            <result name="login">/WEB-INF/myinter/login.jsp</result><!--   value="login";-->
        </action>

        <action name="book" class="cn.happy.day07Interceptor.action.BookAction">
            <result name="success">/WEB-INF/myinter/booksuccess.jsp</result>
        </action>
    </package>
</struts>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值