`

struts-config.xml的controller 元素

阅读更多
<controller>用于配置ActionServlet. 属性 描述 
bufferSize 指定上载文件的输入缓冲的大小。该属性为可选项,默认值为4096. 
className 指定和<controller>元素对应的配置类。默认为org.apache.struts.config.ControllerConfig. 
contentType 指定响应结果的内容类型和字符编码。该属性为可选项,默认值为text/html。如果在Action和JSP网页中也设置了内容类型和字符编码,将会覆盖该设置。 
locale 指定是否把Locale对象保存到当前用户的Session中。默认值为false. 
processorClass 指定负责处理请求的Java类的完整类名。默认值为org.apache.struts.action.RequestProcessor。如果把此项设置为自定义的类,那么应该保证该类扩展了org.apache.struts.action.RequestProcessor类。 
tempDir 指定处理文件上传的临时工作目录。如果此项没有设置,将采用Servlet容器为Web应用分配的临时工作目录。 
nochache 如果为true,在响应结果中将加入特定的头参数 :Pragma, Cache-Control和Expires,防止页面被存储在客户浏览器的缓存中。默认值为false.


如果应用包含多个子应用,可以在每个字应用的Struts配置文件中配置<controller>元素。这样,尽管这些子应用共享同一个ActionServlet对象,但是他们可以使用不同的RequestProcessor类。

以下是<controller>元素的配置代码示例:

<controller   contentType="text/html;charset=UTF-8"   locale="true"   processorClass="CustomRequestProcessor"/>





定制Struts控制器组件
在Struts API中,org.apache.struts.action.RequestProcessor类真正包含了Struts控制器在处理servlet请求时所遵循的控制逻辑。控制器核心组件ActionServlet就是通过调用RequestProcessor对象的process()方法来委托其处理客户端请求的,该方法格式如下:
public void process(

javax.servlet.http.HttpServletRequest request,

javax.servlet.http.HttpServletResponse response)

    throws java.io.IOException, javax.servlet.ServletException{ … }


     RequestProcessor类中还定义了多个processXXX()方法,process()方法正是通过调用他们来具体的处理工作的。下表中对其中重要的几个做简单介绍:

主要处理方法

protected String processPath()
获取客户端请求的路径URI

protected ActionForm processActionForm()
获取当前请求表单所映射的ActionForm Bean

protected ActionMapping processMapping()
根据请求URI获取所需的映射信息

protected Action processActionCreate()
初始化相应的ActionBean

protected ActionForward processActionPerform()
调用Action Bean的execute()方法处理请求

protected void processForwardConfig()
处理由Action Bean的execute()方法返回的ActionForward对象。



     如果要定制ActionServlet的行为规则,其实应从RequestProcessor这个RequestProcessor类着手。要开发自己的RequestProcessor类以实现定制的控制逻辑,应遵循以下步骤:
     1) 创建一个子类继承org.apache.struts.action.RequestProcessor类,在该子类中显式定义(或使用缺省的)无参、方法体为空的构造方法。
     2) 重写所需要的方法,加入定制功能。
     3) 将该子类编译后得到的class文件保存到Struts应用程序的WEB-INF/class/目录下
     4) 修改配置文件struts-config.xml,在其中加入一个名为<controller>的元素,用以指定客户定制的RequestProcessor类。
     在展示一个具体的实现定制功能的例子之前,有必要介绍一下RequestProcessor类中定义的另外几个有关方法:
 protected void log(java.lang.String message){…}
     功能:将参数String对象message的内容存入当前应用程序日志文件。
 protected void log(java.lang.String message, java.lang.Throwable exception) {…}
     功能:将参数String对象message和异常对象exception所封装的信息存入当前应用程序日志文件。
 protected boolean processPreprocess(javax.servlet.http.HttpServletRequest request,
   javax.servlet.http.HttpServletResponse response) {…}
     功能:专门用于在子类中被重写,加入由开发者定制的预处理功能。
     在RequestProcessor类中定义的processPreprocess()方法什么也不做,只是简单返回一个boolean类型值true,用以告知RequestProcessor继续后续处理程序。在定制RequestProcessor类时通常会重写此方法,注意一定要在方法的结尾返回true,如果重写如果返回值为false,则RequestProcessor对象终止对请求的处理,将控制权送回给ActionServlet的doPost()或doGet()方法。

     下面给出用户定制RequestProcessor组件的具体实现步骤:
     1)为已有的Struts应用程序创建用户自己的RequestProcessor类,重写其中的processPreprocess()方法,加入所需的控制逻辑。范例源代码如下:

源文件:MyRequestProcessor.java

package test;

import java.util.Enumeration;

import javax.servlet.http.*;

import org.apache.struts.action.RequestProcessor;


public class MyRequestProcessor extends RequestProcessor {

      public MyRequestProcessor() {} 

      public boolean processPreprocess(HttpServletRequest request,

             HttpServletResponse response) {               

             log("-------------- My Logging Start--------------");

             log("Request URI = " + request.getRequestURI());

             log("Context Path = " + request.getContextPath());                         

             Enumeration headerNames = request.getHeaderNames();

             log("Request Header:");

             while (headerNames.hasMoreElements()) {

                    String headerName =(String)headerNames.nextElement();

                    Enumeration headerValues =   request.getHeaders(headerName);

                    while (headerValues.hasMoreElements()) {

                           String headerValue =(String)headerValues.nextElement();

                           log("\t" + headerName + " = " + headerValue);

                    }                  

             }

             log("Locale = " + request.getLocale());

             log("Method = " + request.getMethod());

             log("Path Info = " + request.getPathInfo());

             log("Protocol = " + request.getProtocol());

             log("Remote Address = " + request.getRemoteAddr());

             log("Remote Host = " + request.getRemoteHost());

             log("Remote User = " + request.getRemoteUser());

             log("Requested Session Id = "

                    + request.getRequestedSessionId());

             log("Scheme = " + request.getScheme());

             log("Server Name = " + request.getServerName());

             log("Server Port = " + request.getServerPort());

             log("Servlet Path = " + request.getServletPath());

             log("Secure = " + request.isSecure());

             log("-------------- My Logging End   --------------");

             return true;

      }

}


     2)编译源文件MyRequestProcessor.java,将所生成的字节码文件(包括所在的package子目录)保存到Struts 应用程序的"WEB-INF/classes/"目录下。
     3)修改此Struts应用程序配置文件struts-config.xml,在其中加入<controller>元素:

     源文件:struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC

      "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"

      "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

    ……

      <controller processorClass="test.MyRequestProcessor" /> 

</struts-config>


     说明:其他组成页面、类设计和应用程序配置均不需做改变。
     4)发布Struts应用程序,并通过客户端浏览器访问该应用程序。
     5)打开Web服务器日志文件<WAS_HOME>/logs/localhost_log.<当天日期>.txt,可以看到新加入的用户定制信息:
     2004-09-24 00:30:28 StandardContext[/myStrutsApp3]action:
-------------- My Logging Start--------------
Request URI = /myStrutsApp3/regist.do
Context Path = /myStrutsApp3
Request Header:
          accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
     application/vnd.ms-powerpoint, application/vnd.ms-excel,
     application/msword , application/x-shockwave-flash, */*
          referer = http://localhost:8080/myStrutsApp3/
          accept-language = zh-cn
          content-type = application/x-www-form-urlencoded
          accept-encoding = gzip, deflate
          user-agent = Mozilla/4.0 (compatible; MSIE 6.0;
      Windows NT 5.1; .NET CLR 1.1.4322)
          host = localhost:8080
          content-length = 20
          connection = Keep-Alive
          cache-control = no-cache
          cookie = JSESSIONID=FD8A69F16E329A362DB219596897D6DA
Locale = zh_CN
Method = POST
Path Info = null
Protocol = HTTP/1.1
Remote Address = 127.0.0.1
Remote Host = 127.0.0.1
Remote User = null
Requested Session Id = FD8A69F16E329A362DB219596897D6DA
Scheme = http
Server Name = localhost
Server Port = 8080
Servlet Path = /regist.do
Secure = false
-------------- My Logging End   --------------
分享到:
评论

相关推荐

    Struts框架中struts-config.xml文件配置小结

    `struts-config.xml`文件遵循一定的DTD(Document Type Definition),其根元素为`&lt;struts-config&gt;`。根据文档提供的信息,这个根元素主要包括以下8个子元素: 1. `&lt;data-sources&gt;` 2. `&lt;form-beans&gt;` 3. `&lt;global-...

    配置struts--config.xml详解

    本文将深入探讨 `struts-config.xml` 的主要元素和属性,帮助开发者更好地理解和配置 Struts 应用。 1. **&lt;struts-config&gt;**:根元素,包含整个配置信息。 - **form-beans**: 子元素,用于定义表单bean,这些bean...

    struts-config.xml

    除了上述元素,`struts-config.xml`还允许定义其他元素,如`&lt;action-forward&gt;`用于定义Action内部的转发,以及`&lt;message-resource&gt;`来配置应用程序的消息资源文件。 正确理解和配置`struts-config.xml`是开发Struts...

    struts-config.xml配置文件详解

    在 Struts-config.xml 文件中,数据源配置是通过 `&lt;data-sources&gt;` 元素实现的,该元素可以包含多个 `&lt;data-source&gt;` 子元素,每个 `&lt;data-source&gt;` 元素可以配置一个数据源。数据源配置中可以设置 driverClass、url...

    Struts-config.xml配置详解

    Struts的配置文件通常命名为struts-config.xml,它是整个Struts应用的核心配置文件,通过定义一系列的XML元素来设定框架的不同功能和行为。下面将详细介绍struts-config.xml中8个主要配置元素的功能和使用方法。 1....

    SSH之Struts1之struts-config.xml常用配置详解(3-21-2008)

    SSH之Struts1之struts-config.xml常用配置详解(3-21-2008)

    struts-config.xml配置

    `struts-config.xml`是Struts框架的核心配置文件,它定义了应用程序的行为、请求映射、数据源等关键元素。这个配置文件位于Web应用的WEB-INF目录下,是开发者与Struts框架交互的主要方式。 **1. 框架组件配置** `...

    struts-config.xml 详解

    `struts-config.xml`是Struts框架的核心配置文件,它定义了应用程序的行为和组件之间的交互。这个文件的主要目的是提供一个集中式的配置点,用于设置数据源、表单bean、异常处理、动作映射等关键元素。以下是每个...

    Struts-config.xml 配置详解.doc

    在编写Struts-config.xml时,元素的顺序很重要,必须按照上述顺序排列,否则可能导致应用程序启动时出现错误。理解并正确配置这些元素是构建有效Struts应用程序的关键步骤。通过精细调整这些配置,开发者可以实现...

    struts-1.3.8-all.zip

    使用Struts 1.3.8时,开发者需要配置web.xml和struts-config.xml,定义ActionServlet、Action、ActionForm等元素。此外,还需要编写ActionForm类,实现业务逻辑的Action类,以及使用JSP和Struts标签创建用户界面。 ...

    在struts-config.xml中配置数据源

    在Struts框架中,`struts-config.xml`是核心配置文件,用于定义动作映射、数据源等关键组件。本篇文章将深入探讨如何在`struts-config.xml`中配置数据源,以及这在实际开发中的意义和作用。 数据源(DataSource)是...

    commons-dbcp-1.2.1.jar commons-pool-1.3.jar struts-legacy.jar

    - Struts 1.x的主要组件包括ActionForm、Action、Dispatcher(现在称为Servlet Filter)、配置文件(struts-config.xml)等。它的MVC模式帮助分离业务逻辑和视图层,简化了Web应用的开发。 这三者组合在一起,可能...

    Struts所有jar包、DTD文件(struts-1.2.9-bin.rar)

    1. **struts-config_1_2.dtd**:定义了`struts-config.xml`的元素和属性。 2. **web-app_2_4.dtd** 或 **web-app_2_5.dtd**:定义了`web.xml`的元素和属性,这是Servlet容器用来配置Web应用程序的文件。 在使用...

    struts-config.xml文件的配置

    Struts-config.xml文件是Struts框架的核心配置文件,它定义了应用程序的行为、数据源、ActionForm Bean等关键元素。以下是关于struts-config.xml文件配置的详细说明: 1. **数据源配置(Data Sources)**: - `...

    struts-2.1.8.1.rar

    1. **Struts 2框架**:Struts 2是MVC(Model-View-Controller)设计模式的一个实现,它整合了WebWork和Struts 1的优点,提供了强大的动作调度、拦截器、结果类型、国际化和异常处理等功能。Struts 2.1.8.1是该框架的...

    struts-2.5.22-all.zip

    在实际开发中,使用Struts2 2.5.22时,开发者需要了解Action、Result、Interceptor的基本概念,以及如何编写Action类、配置Struts.xml文件,还要掌握OGNL的使用来绑定数据。同时,为了提高安全性和性能,还需要关注...

    struts-config1.1.xml

    DTD 规定了 `struts-config.xml` 文件中元素的结构和顺序,确保文件格式正确无误。在文件开头,可以看到 DTD 的引用声明: ```xml &lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts ...

    struts-config详解

    下面是struts-config.xml文件的主要元素: 一、struts-config.xml的主要元素 * 数据源配置(&lt;data-sources&gt;):用于配置struts应用程序的数据源,例如数据库连接池等。 * 表单Bean配置(&lt;form-beans&gt;):用于配置...

Global site tag (gtag.js) - Google Analytics