struts2 拦截器

   


    pom.xml   

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.3</version>
    <scope>test</scope>
</dependency>

<!--获取ServletAPI-->
<dependency>
    <groupId>javaee</groupId>
    <artifactId>javaee-api</artifactId>
    <version>5</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.4.1</version>
</dependency>

<dependency>
    <groupId>org.apache.struts.xwork</groupId>
    <artifactId>xwork-core</artifactId>
    <version>2.3.4.1</version>
</dependency>

         web.xml

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

  action
BookAction类
public class BookAction implements Action {
    public String execute() throws Exception {
        System.out.println("bookaction-----------------");
        return SUCCESS;
    }
}
LoginAction类
public class LoginAction implements Action {
    private UserInfo userInfo;
    public String execute() throws Exception {
        Map<String,Object> session= ActionContext.getContext().getSession();
        if(userInfo!=null){
            if(userInfo.getUsername().equals("1")&&userInfo.getPassword().equals("1")){
                //记录session
                session.put("uname",userInfo.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 getUserInfo() {
        return userInfo;
    }

    public void setUserInfo(UserInfo userInfo) {
        this.userInfo = userInfo;
    }
}
entity
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;
    }
}
Interceptor
MyInterceptor类
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);
        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 actionnmae=actionInvocation.getProxy().getActionName();
        actionInvocation.getProxy().getNamespace();  //user
        System.out.println("actionname--------"+actionnmae);
        if(actionnmae.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("方法:==="+value);
        }else {
            value="login";
        }
        System.out.println("逻辑视图名"+value);
        return value;
    }
}
struts-day06.xml
<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="day06" namespace="/" extends="default">
        <action name="login" class="cn.struts.day06.action.LoginAction">
            <result name="success">/WEB-INF/myinter/success.jsp</result>
            <result name="login">/WEB-INF/myinter/login.jsp</result>
        </action>

        <action name="book" class="cn.struts.day06.action.BookAction">
            <result name="success">/WEB-INF/myinter/booksuccess.jsp</result>
        </action>
        </package>
        </struts>
struts.xml
 
<struts>
<constant name="struts.devMode" value="true"></constant>
    <package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="myInter" class="cn.struts.day06.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"></default-action-ref>

        <action name="first"></action>

    </package>


<!--<include file="struts-day02.xml"></include>
<include file="struts-day03.xml"></include>
<include file="struts-day04.xml"></include>
<include file="struts-day05.xml"></include>-->
<include file="struts-day06.xml"></include>
</struts>
login.jsp
<body>
<h2>登陆234</h2>
<s:form method="POST" action="login">
    请输入用户名<s:textfield name="userInfo.username"></s:textfield>
<s:textfield name="userInfo.password"></s:textfield><br/>
    <s:submit value="登陆"></s:submit>
</s:form>
</body>
success.jsp
<head>
    <title>Title</title>
</head>
<body>
<h2>success!!!!</h2>
</body>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值