struts2拦截器

BookAction

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

UserInfo
public class UserInfo {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

LoginAction
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;
    }
}

MyIntercepter

public class MyIntercepter 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.action
            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;
    }
}

struts.xml

<!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.day07intercepter.LoginAction">
            <result name="success">/day07/success.jsp</result>
            <result name="login">/day07/login.jsp</result>
        </action>
        <action name="book" class="cn.happy.day07intercepter.BookAction">
            <result name="success">/day07/booksuccess.jsp</result>
        </action>
    </package>
</struts>

login.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<h2>登录</h2>
<s:form method="POST" action="login">
    请输入用户名: <s:textfield  name="user.username"></s:textfield> <br/>
    <s:textfield name="user.password"></s:textfield><br/>
    <s:submit value="登陆"></s:submit>
</s:form>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值