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

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

1、http://localhost:8083/struts2/user.jsp 表示用户已登陆,存放session对象

2、http://localhost:8083/struts2/quit.jsp 表示用户已退出,移除session对象

3、http://localhost:8083/struts2/login/addUIHelloWorld.do  如果session存在则往下执行,否则提示“你没有权限执行该操作”

4、http://localhost:8083/struts2/login/executeHelloWorld.do  如果session存在则往下执行,否则提示“你没有权限执行该操作”

   

代码

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 >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值