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

通过Struts的RequestProcessor做权限控制

阅读更多

Struts是由中心控制器ActionServlet去处理请求地,

 中心控制器ActionServlet

 public void doPost(process(HttpServletRequest request, HttpServletResponse response)
{
   process(request,response);
}
protected void process(HttpServletRequest request, HttpServletResponse response)
 throws IOException, ServletException {
    ModuleUtils.getInstance().selectModule(request, getServletContext());
    ModuleConfig config = getModuleConfig(request);
    RequestProcessor processor = getProcessorForModule(config);
  //获取模块的请求处理器
    if (processor == null) {
 processor = getRequestProcessor(config);
    }
    processor.process(request, response);  //调用请求处理器处理请求
}

 

 

 请求处理器RequestProcessor

public void process(HttpServletRequest request, HttpServletResponse response)
 throws IOException, ServletException {
   。。。。。

   //读取请求路径对应的action-mapping信息

   //如果配置有form,则创建表单对象,并将表单信息填充到form bean中

  //调用ActionForm的validate()方法验证表单数据合法性

   //获取请求路径对应的Action

   //调用Action的execute()方法处理请求,放回ActionForward对象

   //根据mapping信息,跳转到相应页面
}

 一般情况下,无需配置此类,当有额外业务需要在请求到达ACTION之前处理时可以配置自己特定的

RequestRrocess类 此类应继承自RequestRrocess类,并重写其process方法

 

Package eud.tsinghua.strutsDemo
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.RequestProcessor;

public class MyRequestProcess extends RequestProcessor{
 
public void process(HttpServletRequest request,
  HttpServletResponse response)
  throws IOException,ServletException{
 //此处可以在请求到达ACTION之前处理一些业务
 
   super.process(request, response) ;
 }

}

 

在Struts-config.xml中配置

<controller
  processorClass="com.MyRequestProcess"
  contentType="text/html;charset=gbk"
  nocache="true"
  locale="true"
 ></controller>

属  性    描  述

processorClass    指定自定义的RequestProcessor类的全名

BufferSize    指定用来下载所用的缓存大小。缺省是4096字节。

contentType    定义response文本类型,缺省是text/html

Debug    定义当前系统的除错级别,缺省是0

Locale    如果是true,则在用户的session中存放Locale对象,缺省为true

maxFileSize    指定下载文件最大的大小。缺省是250M

multipartClass    指定去代替org.apache.struts.upload.DiskMultipartRequestHandler类的类的全名。 Nocache    如果是true,则会关闭每个response的缓存功能。缺省是false

TempDir    指定上载文件所用的临时目录。缺省值由容器决定

 

我写的权限类(简化)

package edu.tsinghua.t01.base;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.RequestProcessor;

public class MyProcessor extends RequestProcessor {

 public boolean processPreprocess(HttpServletRequest request,
   HttpServletResponse response) {
  String path = "";

  try {
   path = super.processPath(request, response);
   System.out.println("ActionMapping的path属性: "+path);
   
   ActionMapping mapping = (ActionMapping) moduleConfig.findActionConfig(path);
   System.out.println("ActionMapping属性: "+mapping);
   
   String clazz = mapping.getType();
   System.out.println("Action的类名: "+clazz);
   
   String method = mapping.getParameter();
   System.out.println("method = "+method);
   
   if(clazz.equals("edu.tsinghua.t01.action.loginAction")){
    return true;
   }else{
    request.setAttribute("editError","不好意思,您的权限不足或该权限已被禁用!不能操作");
    request.getRequestDispatcher("/error.jsp").forward(request, response);
    return false;
   }
   
  }catch(Exception e){
   e.printStackTrace();
  }
  
  return false;
 }
}


 

3
0
分享到:
评论

相关推荐

    struts做的权限设计

    在Struts框架中,用户的权限控制主要通过Action配置来实现。默认情况下,每个Action都可以被任何用户访问。为了实现更精细的权限控制,可以在Action配置中添加`rights`属性来指定该Action所需的权限。 例如,原始的...

    基于Struts的权限实现

    本文将深入探讨如何在Struts框架中实现权限控制,包括角色定义、资源访问控制等方面,并通过具体代码示例进行说明。 #### 二、角色与资源定义 在Struts框架中,权限管理主要涉及两个核心概念:角色(Role)与资源...

    struts1的api

    6. **Interceptor(拦截器)**:虽然Struts1的核心版本不包含拦截器,但通过Struts-Plugin,开发者可以利用拦截器来实现预处理和后处理逻辑,如权限检查、日志记录等。 7. **Plug-in机制**:Struts1支持插件扩展,...

    struts1源代码

    9. **Interceptor**:拦截器是Struts1中实现AOP(面向切面编程)的重要机制,可以定义在请求处理之前和之后执行的逻辑,例如日志记录、权限检查等。 10. **Struts标签库**:Struts1提供了丰富的JSP标签,如、等,...

    struts学习总结

    5. **RequestProcessor**:每个Struts应用都有一个RequestProcessor,它是请求处理的第一道防线,负责初始化ActionServlet,检查请求,以及将请求分派到相应的Action。 6. **Tiles**:Tiles是Struts的一个扩展,...

    Struts应用的安全问题研究.pdf

    4. **扩展Struts组件**:通过扩展Struts的组件(如`TextTag`类),可以更精细地控制页面元素的可见性和操作权限。 #### 六、结论 综上所述,Struts框架虽然提供了基本的安全设置功能,但在实际应用中还需要开发者...

    Struts2源码

    通过尚硅谷的源码分析,我们可以看到Struts2的内部工作机制,如ActionInvocation的调用流程、Interceptor的执行顺序、以及RequestProcessor如何解析HTTP请求。PPT课件则可能涵盖了Struts2的安装配置、基本使用、高级...

    Struts+Spring+Hibernate框架搭建

    使用拦截器可以增强Struts框架的功能,例如,可以在请求到达Action之前执行一些逻辑(如权限检查),也可以在请求完成之后做一些事情(如清理资源)。要使用拦截器,可以遵循以下步骤: 1. **前提**:确保项目中...

    Struts-API.rar_API_struts api

    7. **Interceptor**:拦截器是Struts2引入的新概念,它允许在Action执行前或后插入额外的逻辑,增强了框架的灵活性,如日志、权限验证等常见功能可以通过拦截器实现。 8. **Struts标签库**:Struts提供了丰富的JSP...

    Struts_in_Action

    5. **Interceptor拦截器**:拦截器是Struts中的一个强大功能,它们在Action调用前后执行,可以实现如日志记录、权限验证、事务管理等功能,增强了应用的灵活性和可扩展性。 6. **国际化与本地化**:Struts支持多...

    struts api

    开发者可以通过继承`org.apache.struts.action.RequestProcessor`并覆盖其方法,实现自定义的请求处理逻辑。 6. **ActionForward**:ActionForward用于指定Action执行后页面的跳转方向。它可以是相对路径或绝对URL...

    struts-api.zip

    6. **Interceptor拦截器**: Struts 2引入了拦截器的概念,允许开发者在Action执行前后插入自定义的逻辑,如日志记录、权限验证等。 7. **ValueStack**: Struts 2中的ValueStack是一种数据存储结构,它简化了模型...

    struts1总结

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的控制器部分。Struts1在2000年代中期非常流行,因为它提供了一种结构化的解决方案,使得开发者...

    Struts Hibernate开发实例精品

    Struts框架通过提供一个可扩展的控制器层,使得开发者可以更好地组织业务逻辑和视图。它包含Action、ActionForm、ActionMapping、RequestProcessor等核心组件,以及一系列的标签库,如displaytag和struts tags,用于...

    三种整合 Struts 应用程序与 Spring 的方式

    其次,使用Spring的DelegatingRequestProcessor覆盖Struts的RequestProcessor,这是一种更加深入的整合方式。DelegatingRequestProcessor允许开发者在Struts的请求处理流程中插入Spring的逻辑,使得在请求处理的早期...

    Struts1.3 api函数

    1. **Action类和ActionForm类**:在Struts1.3中,Action类是核心控制器,负责接收用户请求并调用相应的业务逻辑。ActionForm类则用于封装请求参数,它在Action之间传递数据,实现了模型层与视图层之间的解耦。 2. *...

    struts_api 帮助文档

    6. **Interceptor**: 拦截器是Struts 2中的一个重要特性,它们是实现了特定接口的类,可以在Action调用前后执行代码,用于实现如日志、权限检查等功能。 7. **ValueStack**: ValueStack是Struts 2中用于存储模型...

    struts架包

    7. **RequestProcessor**:Struts1的RequestProcessor是请求处理的第一站,它负责解析请求并调用合适的ActionForm和Action。 8. **Plug-in机制**:Struts1支持插件扩展,允许开发者添加自定义的行为来扩展框架的...

Global site tag (gtag.js) - Google Analytics