`
cyh_it
  • 浏览: 12933 次
  • 性别: 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
分享到:
评论

相关推荐

    struts1整合spring 通过代理RequestProcessor实现

    这只是一个最简单的demo,只有一个action, 通过代理RequestProcessor实现

    DisapatchAction测试和RequestProcessor控制器类

    DisapatchAction测试和RequestProcessor控制器类

    Struts控制器示例

    Struts的控制器主要包括: ActionServlet :核心控制器 RequestProcessor :子应用模块的处理器 Action :处理单项业务

    精通Struts基于MVC的Java Web设计与开发 孙卫琴 光盘

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    Struts1.3 备忘笔记

    06 Struts_06Filter : 中文编码的统一处理,通过Struct的请求处理器接口RequestProcessor(中央控制器)来实现 07 Struts_07ForwardAction : 访问WebRoot/WEB-INF/下文件的一种方式 08 Struts_08DynaValidatorForm : ...

    精通 Struts:基于 MVC 的 JavaWeb 设计与开发(PDF)

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    精通Struts_基于MVC的Java Web设计与开发

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    精通struts:基于mvc的java web设计与开发part3

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    精通struts:基于mvc的java web设计与开发part2

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    JSP Struts配置文件详解

    默认org.apache.struts.action.RequestProcessor @tempDir:指定文件上传时的临时工作目录.如果没有设置,将才用Servlet容器为web应用分配的临时工作目录. @nochache:true时,在相应结果中加入特定的头参数:Pragma ,...

    精通struts:基于mvc的java web设计与开发part1

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    struts1流程和原理

    struts1的几个核心组件是值得我们注意的: 1 、ActionServlet(核心控制器)。 2、RequestProcessor类(处理异常的核心组件)。 3、ActionForm(接收页面中传过的数据)。 4、Action(是控制器,主要是从ActionForm中...

    Spring中集成Struts的三种方式

    //第一种方式:使用 Spring 的 ActionSupport 类整合 Structs ...//第二种方式:使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor //第三种方式:将 Struts Action 管理委托给 Spring 框架

    基于MVC的java Web设计与开发

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    Struts开发指南之工作流程

    它是一个标准的Servlet,它将request转发给RequestProcessor来处理, ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息RequestProcessor根据提交过来的url...

    Hibernate+Spring+Struts扩展Struts

    简介: 我看到很多项目中,开发者实现了自己的MVC框架,并不是因为他们想做同Struts根本不同的东西,而是因为他们并没有意识到如何扩展Struts。开发自己的MVC框架可以获得全部的控制权,但是这也意味着需要很多资源...

    Struts_config.xml详解

    roles="" //指定允许调用该Action的安全角色,多个角色之间用,隔开,在处理请求时,RequestProcessor会根据该配置项来决定用户是否有权限调用Action权限。 scope="request" //指定ActionForm Bean的存在范围,可...

    StrutsAPI(java)

    在請求來臨後,RequestProcessor 根據請求URI呼叫對應的Action物件,將工作交給它,並在最後由Action物件得到一個ActionForward物件, ActionServlet使用ActionForward得知將流程forward至指定的資源。 當請求到達...

Global site tag (gtag.js) - Google Analytics