struts2自定义拦截器一——模拟登陆权限验证

代码

user.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    request.getSession().setAttribute("user", "ljq");
%>

 用户已经登录

quit.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    request.getSession().removeAttribute("user");
%>

 用户已经退出登录

Action类

复制代码
package com.ljq.action; public class HelloWorldAction { private String message; public String addUI() { this.message = "addUI"; return "success";
    } public String execute() throws Exception { this.message = "execute"; return "success";
    } public String getMessage() { return message;
    } public void setMessage(String message) { this.message = message;
    }
}
复制代码

权限类

复制代码
package com.ljq.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * 限制没有登录的用户进入访问页面
 * 
 * @author jiqinlin
 * */ @SuppressWarnings("serial") public class PermissionInterceptor implements Interceptor { public void destroy() {
    } public void init() {
    } public String intercept(ActionInvocation invocation) throws Exception {
        Object user = ActionContext.getContext().getSession().get("user"); // 如果user不为null,代表用户已经登录,允许执行action中的方法  if (user != null){ return invocation.invoke(); 
        }
        ActionContext.getContext().put("message", "你没有权限执行该操作"); return "success";
    }

}
复制代码

struts.xml配置文件

复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.action.extension" value="do" />

    <package name="login" namespace="/login" extends="struts-default">
        <interceptors>
            <!-- 自定义拦截器 -->
            <interceptor name="permission" class="com.ljq.interceptor.PermissionInterceptor" />
            <!-- 配制默许的拦截器到拦截器栈 -->
            <interceptor-stack name="permissionStack">
                <!-- 此处先后顺序好像没影响哦,我尝试过是没影响的 -->
                <interceptor-ref name="permission" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <!-- 配置默认的拦截器 -->
        <default-interceptor-ref name="permissionStack" />
        <!-- 全局变量 -->
        <global-results>
            <result name="success">/WEB-INF/page/message.jsp</result>
        </global-results>
        <action name="*HelloWorld" class="com.ljq.action.HelloWorldAction"
            method="{1}">
            <!-- <interceptor-ref name="permissionStack" />  -->
        </action>
    </package>

</struts>

转载于:https://my.oschina.net/zhuyongfei/blog/127039

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值