0
点赞
收藏
分享

微信扫一扫

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 条评论