`

Struts2拦截器权限验证(源码)!

阅读更多

          长话短说,抛砖引玉,举个很简单的例子,通过Session,验证用户是否已登陆。

环境:MyEclipse6.5+Mysql5+struts2.0.11.2

源码:拦截器类:

AuthInterceptor.java

 

<!---->package com.sy.interceptor;

import java.util.Map;

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

public class AuthInterceptor extends AbstractInterceptor {

    
private static final long serialVersionUID = -3363926000416510686L;

    @SuppressWarnings(
"unchecked")
    @Override
    
public String intercept(ActionInvocation invocation) throws Exception {

        @SuppressWarnings(
"unused")
        Map map
=invocation.getInvocationContext().getSession();//获取session映射
        
        
if(map.get("user")==null){//如果未登陆转到登陆页面
            return Action.LOGIN;
        }
        
else{
            
return invocation.invoke();//如果登陆继续执行
        }
    }

}

 

验证用户登陆后的Action类,负责向Session中插入值。

AdminAction.java

 

<!---->package com.sy.action;

import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sy.dao.AdminDao;
import com.sy.dao.NewsDao;
import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.NewsDaoImpl;
import com.sy.vo.Admin;
import com.sy.vo.News;

public class AdminAction extends ActionSupport {

    
private static final long serialVersionUID = -3699334709726488611L;
    
int i=1;//中间变量
    private int k;//储存最大页面数
    private int pageNow=1//页码数,初始为1
    private int pageSize = 8 ; //页面行数 
    private int intRowCount;//总行数
    private int intPageCount;//总页数
    private List<News> Newss;
    
private Admin admin;
    
public List<News> getNewss() {
        
return Newss;
    }
    
public void setNewss(List<News> newss) {
        Newss 
= newss;
    }
    
public Admin getAdmin() {
        
return admin;
    }
    
public void setAdmin(Admin admin) {
        
this.admin = admin;
    }
    
public int getPageNow() {
        
return pageNow;
    }
    
public void setPageNow(int pageNow) {
        
this.pageNow = pageNow;
    }
    
public int getPageSize() {
        
return pageSize;
    }
    
public void setPageSize(int pageSize) {
        
this.pageSize = pageSize;
    }
    
public int getK() {
        
return k;
    }
    
public void setK(int k) {
        
this.k = k;
    }
    
public int getIntRowCount() {
        
return intRowCount;
    }
    
public void setIntRowCount(int intRowCount) {
        
this.intRowCount = intRowCount;
    }
    
public int getIntPageCount() {
        
return intPageCount;
    }
    
public void setIntPageCount(int intPageCount) {
        
this.intPageCount = intPageCount;
    }
    @SuppressWarnings(
"unchecked")
    
public String execute() throws Exception {
        
        AdminDao adi
=new AdminDaoImpl();
        admin.getAname();
        admin.getApassword();
        
if(adi.isLogin(admin)){
            
            Map map
=ActionContext.getContext().getSession();//插入Session的值
            map.put("user", admin.getAname());
            
            NewsDao npage
=new NewsDaoImpl();
            intRowCount
=npage.count();
            k
=(intRowCount + pageSize - 1/ pageSize;
            intPageCount 
= (intRowCount + pageSize - 1/ pageSize;//计算出总页数
            if(pageNow<1){
                pageNow
=1;
            }
            
            
if(pageNow > intPageCount)
                 pageNow
=intPageCount;
                 i 
= (pageNow -1)*pageSize;
            NewsDao nlist
=new NewsDaoImpl();
            
if(null!=nlist.queryByPage(i,pageSize)){
            Newss 
= nlist.queryByPage(i,pageSize);
            
            
return SUCCESS;
            }
else{
                
return "failure";
            }
                }
else
                    
return "failure";
        }
    }

 

 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>
    
<package name="News" extends="struts-default">

    
<interceptors>

    
<interceptor-stack name="myStack">
                
<interceptor-ref name="defaultStack"></interceptor-ref>
                
<interceptor-ref name="auth"></interceptor-ref>
    
</interceptor-stack>
    
    
<interceptor name="auth" class="com.sy.interceptor.AuthInterceptor"/>
    
</interceptors>

    
<global-results>
        
<result name="login" type="redirect">/admin/login.jsp</result>
    
</global-results>
<!-- 验证管理员登陆 -->
        
<action name="login" class="com.sy.action.AdminAction">
            
<result name="failure">/admin/failure.jsp</result>
            
<result>/admin/ManageNews.jsp</result>
            
<result name="input">/admin/login.jsp</result>
        
</action>
<!-- 管理员列表 -->        
        
<action name="alist" class="com.sy.action.ListAction" method="adminList">
            
<result>/admin/deleteManager.jsp</result>
            
<result name="failure">/admin/Showfailure.jsp</result>
            
<interceptor-ref name="myStack"></interceptor-ref>
        
</action>
    
</package>
</struts>

 

 配置完成!!!

施杨出品!!!转载注明出处www.cnblogs.com/shiyangxt

分享到:
评论
1 楼 lyh20081984 2011-01-04  
这也出品,呵呵,你这个只是验证用户有没有登录,但是比如当action中有几个方法时,我要验证其中的某一个方法是否具有权限操作,又当如何,请教

相关推荐

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

    在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...

    struts2.X 拦截器源码

    在Struts2中,拦截器扮演着中间件的角色,它在Action执行前后进行处理,可以进行如日志记录、权限检查、数据验证等操作,极大地提高了代码的复用性和可维护性。 首先,我们需要理解拦截器的工作原理。在Struts2框架...

    Struts2拦截器源码

    在Struts2框架中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志记录等功能的核心组件。下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的...

    struts2拦截器实现权限控制

    在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外的功能,如日志记录、事务管理、权限验证等。对于权限控制,拦截器可以在请求到达Action之前检查用户的登录状态...

    struts2 拦截器

    3. **权限验证**:拦截器可以实现用户登录检查,防止未授权的访问。 4. **数据校验**:在Action执行前,拦截器可以对输入数据进行校验,确保数据的合法性。 5. **业务逻辑增强**:如事务管理,可以在拦截器中进行...

    Struts2 拦截器

    Struts2 框架是Java Web开发中的一个流行选择,它提供了一种优雅的方式来组织和控制MVC(模型-视图-控制器...对于那些希望深入理解Struts2框架或者想要优化现有应用的人来说,研究Struts2拦截器的源码是非常有价值的。

    Struts2拦截器原理分析

    在文章"Struts2拦截器原理分析实例"中,作者通过一个具体的应用场景,展示了如何配置和使用拦截器来实现特定的功能,比如日志记录或权限验证。通过阅读这篇博客,我们可以更直观地理解拦截器的工作方式和价值。 ...

    struts2拦截器权限判断实例

    在“struts2拦截器权限判断实例”中,我们将创建一个自定义的拦截器来检查用户是否具有访问特定资源的权限。这个拦截器可能包括以下几个步骤: 1. **创建拦截器类**: 首先,我们需要创建一个实现了`Interceptor`...

    Struts2学习案例(拦截器)

    在Struts2中,拦截器是基于Java的动态AOP(面向切面编程)实现的,它可以在Action调用前后插入额外的逻辑,比如日志记录、权限验证、事务管理等。拦截器通过配置文件或者注解与Action关联,形成一个拦截器栈,每个...

    Struts2拦截器详解源码

    Struts2 拦截器(Interceptor)是框架的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,极大地增强了应用的灵活性和可维护性。与Servlet规范中的Filter相比,虽然两者都用于处理请求,但拦截器在...

    浪曦struts2拦截器源码

    拦截器在Struts2中扮演着重要的角色,它们是AOP(面向切面编程)的一种实现,用于在动作执行前后插入额外的功能,如日志记录、权限检查等。 首先,我们需要了解什么是拦截器。在Struts2中,拦截器是一个实现了`...

    struts2 拦截器实现登录控制

    这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...

    Struts2 拦截器注解(二十七)

    拦截器是Struts2框架的核心组件之一,它允许开发者在动作执行前后插入自定义逻辑,实现如权限验证、日志记录、性能优化等多种功能。在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的...

    利用struts2拦截器做的简单登录

    拦截器是Struts2框架的核心组件之一,它允许我们在动作执行前后插入自定义逻辑,比如权限验证、日志记录等。 首先,我们来理解一下Struts2拦截器的工作原理。拦截器是一个实现了`Interceptor`接口的类,它们按照...

    struts1.2拦截器使用插件

    2. **注册拦截器**:在`struts-config.xml`配置文件中,通过`&lt;interceptors&gt;`标签定义拦截器栈,然后通过`&lt;action&gt;`标签的`interceptor-ref`属性引用拦截器栈。 3. **配置拦截器栈**:在`struts-config.xml`中,...

    Struts2 拦截器 和 Java 中的动态代理

    通过在Action执行前后插入自定义代码,拦截器使得我们可以方便地进行如日志记录、权限验证等操作,而无需直接修改Action本身。理解这一机制对于优化和调试Struts2应用至关重要。同时,熟悉Java动态代理也能够帮助...

    struts2 拦截器的使用(继承抽象拦截器)

    这篇博客文章“struts2 拦截器的使用(继承抽象拦截器)”探讨了如何通过继承Struts2的抽象拦截器来创建自定义拦截器。 首先,让我们理解拦截器的基本概念。在Struts2中,拦截器是基于Java的动态代理机制实现的,...

    Struts2的拦截器的使用详解

    本文将深入探讨Struts2的拦截器使用,结合实例和源码分析,帮助你更好地理解和运用这一特性。 一、拦截器的概念与作用 拦截器是Struts2框架的核心组件之一,它是在动作执行前后插入的一段代码,能够对请求进行...

    一个Struts2的核心拦截器例子

    核心拦截器是Struts2框架的重要组成部分,它们允许开发者在动作执行前后插入自定义逻辑,以实现如日志、权限验证、数据校验等常见功能。下面将详细讲解Struts2的核心拦截器以及如何在项目中使用它们。 1. **Struts2...

    12 struts2拦截器

    Struts2提供了一系列内置的拦截器,如`params`拦截器用于处理请求参数,`exception`拦截器处理异常,`i18n`拦截器实现国际化,`chain`拦截器使请求继续执行下一个Action,`timer`记录Action的执行时间等。这些拦截...

Global site tag (gtag.js) - Google Analytics