`
esffor
  • 浏览: 1370591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《struts2权威指南》学习笔记之使用拦截器完成权限控制

阅读更多

本例的功能是,必须指定用户名 scott/tiger 登陆的用户,方能查看系统中viewBook的这个资源,否则直接跳回登陆页面

登陆Action

 

package auth;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
import java.util.*;



public class LoginAction extends ActionSupport
...{
    
private String username;
    
private String password;

    
public void setUsername(String username)
    
...{
        
this.username = username;
    }

    
public String getUsername()
    
...{
        
return username;
    }


    
public void setPassword(String password)
    
...{
        
this.password = password;
    }

    
public String getPassword()
    
...{
        
return password;
    }


    
public String execute() throws Exception
    
...{
        System.out.println(
"进入execute方法执行体..........");
        Thread.sleep(
1500);
        
if (getUsername().equals("scott")
            
&& getPassword().equals("tiger") )
        
...{
            ActionContext ctx 
= ActionContext.getContext();
            Map session 
= ctx.getSession();
            session.put(
"user" , getUsername());
            
return SUCCESS;
        }

        
else
        
...{
            
return ERROR;
        }

    }



}

 权限检测拦截器

 

package auth;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AuthorityInterceptor extends AbstractInterceptor ...{

    
    
public String intercept(ActionInvocation invocation) throws Exception ...{
        ActionContext ctx
=invocation.getInvocationContext();
        Map session
=ctx.getSession();
        String user
=(String)session.get("user");
        
if(user!=null&&user.equals("scott"))...{
            
return invocation.invoke();
        }
else...{
            ctx.put(
"tip""您还没有登录");
            
return Action.LOGIN;
        }

        
    }


}

 

配置action (struts.xml)

 

<?xml version="1.0" encoding="GBK"?>
<!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.custom.i18n.resources" value="globalMessages"/>
    
<constant name="struts.i18n.encoding" value="GBK"/>

    
<package name="lee" extends="struts-default">
      
    
        
<interceptors>
          
<interceptor name="authority" class="auth.AuthorityInterceptor"></interceptor>
        
</interceptors>
        
         
<global-results>
          
<result name="login">/login.jsp</result>
        
</global-results>
        
        
<!-- 将viewBook.jsp放在web-inf下,防止直接用url访问 -->
        
<action name="viewBook">
          
<result>/WEB-INF/viewBook.jsp</result>
        
<!-- 拦截器一般配置在result之后 -->
        
<interceptor-ref name="defaultStack"></interceptor-ref>
        
<interceptor-ref name="authority"></interceptor-ref>  
        
</action>
        
         
<action name="login" class="auth.LoginAction">
            
<result name="error">/error.jsp</result>
            
<result name="success">/welcome.jsp</result>
        
</action>
        
        
    
    
</package>
    
    
</struts>

 

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns
="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
    
<filter>
      
<filter-name>struts2</filter-name>
      
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    
</filter>
    
<filter-mapping>
      
<filter-name>struts2</filter-name>
      
<url-pattern>/*</url-pattern>
    
</filter-mapping>
 
 
    
<filter>
      
<filter-name>struts-cleanup</filter-name>
      
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    
</filter>
    
<filter-mapping>
      
<filter-name>struts-cleanup</filter-name>
      
<url-pattern>/*</url-pattern>
    
</filter-mapping>
</web-app>

 

viewBook.jsp  放到web-inf下

 

<%...@ page contentType="text/html; charset=GBK"%>
<html>
<head>
    
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
    
<title>作者李刚已经出版的图书:</title>
</head>
<body>
作者已经出版的图书:
<p>
Spring2.0宝典
<br>
轻量级J2EE企业实战
<br>
基于J2EE的Ajax宝典
<br>
</body>
</html>

 

login.jsp

 

<%...@ page language="java" contentType="text/html; charset=GBK"%>
<%...@taglib prefix="s" uri="/struts-tags"%>

<%...@ page isELIgnored="false" %>
<%
分享到:
评论

相关推荐

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    struts2拦截器实现权限控制

    这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...

    Struts2权威指南完整版

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts2权威指南.pdf 清晰中文完整版

    这本书《Struts2权威指南》显然是针对想要学习或深入理解Struts2框架的开发者设计的。下面我们将详细探讨Struts2的一些核心知识点。 1. **Struts2框架概述**:Struts2是Apache软件基金会的开源项目,它是Struts1的...

    struts2权威指南源代码

    `struts2Demo`中的拦截器示例可能包括日志记录、权限检查、事务管理等功能。 5. **OGNL(Object-Graph Navigation Language)**:Struts2的视图层常使用OGNL表达式来获取或设置对象的属性。源代码中会展示如何在JSP...

    Struts2权威指南 加源码

    总的来说,《Struts2权威指南》结合源码阅读,可以帮助读者不仅掌握Struts2的基本使用,还能深入到框架底层,提高问题排查和优化能力。同时,对于Spring和Hibernate的集成部分,也能提升开发者在大型项目中的协作和...

    Struts2权威指南-带目录索引完整版.pdf

    Struts2权威指南 带目录索引完整版

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    不用多说了,Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版),解压出来有200多M,因为权限不怎么够,我一共分了12卷,是一本不可多得的好书。第一卷附目录: 第1章 Struts 2概述,第2章 Struts 2下的Hello...

    使用struts2拦截器对登陆权限验证

    在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...

    Struts 2权威指南源码.rar

    这个"Struts 2权威指南源码.rar"压缩包文件包含了《Struts 2权威指南》一书中的示例代码,这些源码对于学习和理解Struts 2框架的工作原理非常有帮助。 在深入探讨源码之前,让我们先了解Struts 2的核心特性: 1. *...

    Struts2权限控制

    Struts2是一个非常流行的Java Web框架,用于...通过学习这个文档,开发者可以了解到如何在实际项目中灵活运用Struts2的拦截器来实现高效且健壮的权限控制系统。这种能力对提升应用的安全性和用户体验有着显著的贡献。

    struts2 权威指南完整版PDF

    4. **拦截器**:拦截器是Struts2的核心特性,它们按照定义的顺序在Action执行前后执行,可以实现事务管理、权限控制、日志记录等功能。例如,ValidationInterceptor用于表单验证,PrepareInterceptor则用于在Action...

    Struts2学习案例(拦截器)

    在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...

    struts2 用拦截器 实现用户权限登录

    本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它通过观察者模式实现,当一个请求到达时,会按照配置的顺序依次执行...

    struts2 学习重点笔记

    - **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...

    Struts2拦截器及其用法详细说明

    总结,Struts2拦截器是其核心机制之一,它允许开发者以模块化的方式添加额外的功能,提高代码的可复用性和可维护性。通过自定义拦截器和合理配置,我们可以实现诸如日志记录、事务管理、权限验证等多种业务需求,...

    Struts2权威指南全部源码

    总的来说,"Struts2权威指南全部源码"是一份宝贵的资源,通过深入学习和实践,你可以提升对Struts2的理解,掌握Web应用开发的关键技能。但同时,也要准备好面对可能的挑战,因为学习过程中遇到错误是正常的,关键...

    struts2四天的学习笔记

    struts.xml定义了Action的映射、结果类型、拦截器等,而web.xml则配置DispatcherServlet(Struts2的前端控制器)和其他必需的Servlet和过滤器。 4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,它...

    struts2权威指南源码

    总的来说,Struts2源码的学习涵盖了Java Web开发中的许多重要概念和技术,包括MVC模式、拦截器、依赖注入、表达式语言等。虽然提供的源码没有包含所有依赖,但仍然能为开发者提供深入学习和研究的机会,尤其是在框架...

Global site tag (gtag.js) - Google Analytics