Struts2自定义拦截器

1.拦截器的配置

<interceptors>
    <!--定义权限验证拦截器-->
    <interceptor name="myAuthorization" class="com.softjx.AuthorizationInterceptor"> </interceptor>
    <!--定义权限验证拦截器栈-->
    <interceptor-stack name="myStack">
        <interceptor-ref name="myAuthorization"/>
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
</interceptors>

2.拦截器类AuthorizationInterceptor.java

package com.softjx;


import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.model.Person;

/**
 * 权限验证检查拦截器
 *  
 */

public class AuthorizationInterceptor extends AbstractInterceptor {

    private static final long serialVersionUID = -1919190535109141892L;

    /*
    * 拦截器的拦截方法
    */
    @SuppressWarnings("unchecked")
    public String intercept(ActionInvocation invocation) throws Exception {
        //获取用户会话信息
        Map session = invocation.getInvocationContext().getSession();
        Person user = (Person)session.get("login");
        if (user == null) {
            //终止执行,返回登录页面
            return Action.LOGIN;
        } else {
            //继续执行剩余的拦截器和Action
            return invocation.invoke();
        }
    }


}

3.Action类LoginAction.java

package com.softjx;


import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.model.Person;

public class LoginAction extends ActionSupport {

    private String flag;

    private Person person;

    /**
     * 登录
     * @return
     */
    public String login()
    {

        flag="login";
        Map session=ActionContext.getContext().getSession();
        session.put("login", person);
        return "success";
    }


    public String add()
    {

        flag="add";
        return "success";
    }

    public String edit()
    {
        flag="edit";
        return "success";
    }


    public String getFlag() {
        return flag;
    }


    public void setFlag(String flag) {
        this.flag = flag;
    }


    public Person getPerson() {
        return person;
    }


    public void setPerson(Person person) {
        this.person = person;
    }
}

4.strut.xml

<?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.ognl.allowStaticMethodAccess" value="true"></constant>

<!-- 配置Struts可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do,"></constant>

<!-- 打开允许动态方法的开关,默认是false -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

<package extends="struts-default" name="default" namespace="/"> 

<interceptors>
    <!--定义权限验证拦截器-->
    <interceptor name="myAuthorization" class="com.softjx.AuthorizationInterceptor"> </interceptor>
    <!--定义权限验证拦截器栈-->
    <interceptor-stack name="myStack">
        <interceptor-ref name="myAuthorization"/>
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
</interceptors>

    <action name="loginUser" class="com.softjx.LoginAction" method="login">
        <result name="success" type="dispatcher">loginsuccess.jsp</result>
        <result name="fail">fail.jsp</result>
    </action>

    <action name="addUser" class="com.softjx.LoginAction" method="add">
        <interceptor-ref name="myStack"/>
        <result name="success">addsuccess.jsp</result>
        <result name="fail">fail.jsp</result>
        <result name="login">loginuser.jsp</result>
    </action>

    <action name="editUser" class="com.softjx.LoginAction" method="edit">
        <interceptor-ref name="myStack"/>
        <result name="success">editsuccess.jsp</result>
        <result name="fail">fail.jsp</result>
        <result name="login">loginuser.jsp</result>
    </action>



</package>



</struts>

5.简单登陆添加界面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC 
    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>用户登录</title>
    </head>
    <body>
        <h1>
            用户登录
        </h1>

        <s:form action="loginUser.action" method="post">
            <s:textfield name="person.username" label="Name" />
            <s:password name="person.password" label="Pass"/>
            <br>
            <input type="submit" value="提交" />
        </s:form> 





    </body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC 
    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>用户登录</title>
    </head>
    <body>


        <h1>
            用户添加
        </h1>
        <s:form action="addUser.action" method="post">
        <s:textfield name="name" label="Name"></s:textfield>
        <s:textfield name="password" label="Password"></s:textfield>
        <s:submit></s:submit>
        </s:form>



    </body>
</html>

版权声明:本文为surpass0728原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。