java.lang.Object
|
+--javax.servlet.GenericServlet
|
+--javax.servlet.http.HttpServlet
|
+--org.apache.struts.action.ActionServlet
Struts提供了一个缺省版本的ActionServlet类,你可以继承这个类,覆盖其中的一些方法来达到你的特殊处理的需要。ActionServlet继承与javax.servlet.http.HttpServlet,所以在本质上它和一个普通的servlet没有区别,你完全可以把它当做一个servlet来看待,只是在其中完成的功能不同罢了。ActionServlet主要完成如下功能:
将一个来自客户端的URI映射到一个相应的Action类
如果是这个Action类是第一次被调用,那么实例化一个并放入缓存
如果在配置文件(struts-config.xml)中指定了相应的ActionForm,那么从Request中抓取数据填充FormBean
调用这个Action类的perform()方法,传入ActionMapping的一个引用,对应的ActionForm、以及由容器传给ActionServlet的HttpServletRequest、HttpServletResponse对象。
确省版本的ActionServlet会从配置文件web.xml中读取如下初始化参数:
application
应用使用的资源包(resources bundle)的基类
factory
用于创建应用的MessageResources对象的MessageResourcesFactory的类名。确省是org.apache.struts.util.PropertyMessageResourcesFactory。
config
Struts的配置文件,确省是/WEB-INF/struts-config.xml。注意这儿是与应用Context关联的相对路径。
content
定义了确省的内容类型和编码格式,它会被自动地被设置到每个response中,如果JSP/Servlet中没有明确的设置。确省是text/html。
debug
调试信息的级别。默认为0,比当前级别高的调试信息会被log到日志文件中。
detail
与debug的作用类似,只是这个detail是initMapping()时专用的。调试信息会被打印到System.out,而不是日志文件。
formBean
ActionFormBean的实现类,确省为org.apache.struts.action.ActionFormBean
forward
应用中使用的ActionForward类,确省是org.apache.struts.action.ActionForward。
locale
指定了确省使用的Locale对象。设为true,当得到一个session时,会自动在session中存储一个以Action.LOCALE_KEY标示的Locale对象,如果session中还没有与Action.LOCALE_KEY绑定的Locale对象。
mapping
应用中使用的ActionMapping类,确省是org.apache.struts.action.ActionMapping。
multipartClass
文件上传使用的MutipartRequestHandler的实现类。确省为org.apache.struts.upload.DiskMultipartRequestHandler
nocache
如果设为true,那么ActionServlet会自动在每个到客户端的响应中添加nocache的HTML头,这样客户端就不会对应用中的页面进行缓存。确省为false
null
如果设置为true,那么应用在得到一个未定义的message资源时,会返回null,而不是返回一个错误信息。确省是true。
maxFileSize
文件上传的大小上限,确省为250M
bufferSize
文件上传时的缓冲区的大小,确省为4M
tempDir
设置用于上传时的临时目录。工作目录会作为一个Servlet环境(Context)的属性提供。
validate
Are we using the new configuration file format?确省为true。
validating
在解析配置XML文件是是否进行有效性的验证。确省为true
ActionServlet中应用了命令设计模式。
一个Servlet在由容器生成时,首先会调用init()方法进行初始化,在接到一个HTTP请求时,调用相应的方法进行处理;比如GET请求调用doGet()方法,POST请求调用doPost()方法。所以首先看看ActionServlet的init()方法,你就会很清楚为什么ActionServlet可以完成这些功能了。
重写ActionServlet一步解决struts中文问题
1.自己写一个继承actionservlet类的一个新类用来代替默认的actionservlet
public void process(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException{
request.setCharacterEncoding("gb2312");
RequestUtils.selectModule(request, getServletContext());
getRequestProcessor(getModuleConfig(request)).process(request,response);
}
2.修改web.xml中的actionservlet
<servlet-name>action</servlet-name>
<servlet-class>com.test.ationservlet.MyActionServlet</servlet-class>
分享到:
相关推荐
### ActionServlet深入探讨 #### 一、概述 在Java Web开发中,特别是使用Struts框架进行Web应用程序构建的过程中,ActionServlet扮演着至关重要的角色。它作为Struts框架的核心组件之一,负责处理用户请求,并将其...
### Struts 源码学习之ActionServlet #### 一、引言 在Java Web开发领域,Struts框架因其简洁的MVC(Model-View-Controller)架构模式而备受开发者青睐。本文旨在深入剖析Struts框架的核心组件之一——`Action...
ActionServlet.java
【ActionServlet demo】是一个基于Java和Servlet技术的示例项目,它主要展示了如何在Web应用程序中使用Servlet来处理用户请求并驱动业务逻辑。这个项目可能与Struts 1.3框架相结合,Struts是一个广泛使用的MVC(模型...
### Struts 中扩展 ActionServlet 的关键知识点 #### 一、ActionServlet 在 Struts 框架中的角色 在 Struts 框架中,`ActionServlet` 起着核心控制器的作用,它作为整个框架的核心组件,负责接收来自客户端的请求...
本篇文章将深入解析Struts1框架的执行原理,以及Action、ActionServlet、ActionForm三个关键组件的工作机制。 首先,我们来看Struts1的工作流程: 1. 用户通过浏览器发起HTTP请求,请求的目标是应用中的一个JSP或...
在Struts框架中,`ActionServlet`是一个关键的Servlet实现,它负责管理应用程序的业务逻辑和视图呈现。`web.xml`文件是部署描述符,用于配置Web应用的各个组件,包括`ActionServlet`的属性。以下是对`web.xml`中`...
struts1之ActionServlet详解 struts1框架中的ActionServlet是Struts1架构的核心组件之一,负责处理用户请求、交互ActionForm、ActionMapping和Action等组件,以完成用户请求。下面将详细介绍ActionServlet的工作...
Struts1框架的核心组件包括ActionServlet、ActionForm、Action、Tiles以及配置文件(struts-config.xml)。ActionServlet作为控制器,负责拦截所有的HTTP请求,解析请求中的信息,并根据struts-config.xml配置文件来...
2. 请求被ActionServlet捕获,ActionServlet根据配置文件找到对应的Action。 3. Action处理请求,可能会调用业务逻辑层(通常是Model层)。 4. Action执行完成后,返回一个结果,该结果定义了下一步应该显示哪个页面...
在Struts中,`ActionServlet`是关键组件之一,它是Struts框架与Servlet容器之间的桥梁。 **ActionServlet** 是Struts框架的核心控制器,它是一个定制的Servlet,负责处理所有的HTTP请求。当用户发起一个请求时,...
ActionServlet is the Command part of the MVC implementation and is the core of the Framework. ActionServlet (Command) creates and uses Action, an ActionForm, and ActionForward. As mentioned earlier, ...
在上面的代码中,我们定义了一个名为“action”的Servlet,它的类名是org.apache.struts.action.ActionServlet,这是Struts框架提供的ActionServlet实现类。 其次,我们需要配置<servlet-mapping>元素,以便指定...
Struts提供了控制器Servlet(ActionServlet)来协调请求处理,同时提供了Action和ActionForm类来处理业务逻辑和表单数据。ActionForm接收用户输入,Action则执行相应的业务逻辑并调用服务层(Service Layer)。此外...
根据给定文件的信息,我们可以提炼出与Java笔试相关的知识点,主要围绕Struts框架中的ActionServlet组件进行阐述。 ### Java笔试知识点:Struts框架中的ActionServlet #### 一、ActionServlet的作用与配置 - **...
即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或...
对于action和servlet混用的问题进行说明和解答,action和servlet混合使用会产生一些影响。
在Struts 1框架中,ActionServlet是控制器的主要实现,它接收到请求后会根据配置信息(如struts-config.xml)将请求转发给相应的Action类处理。而在一个简单的自定义Controller中,`doProcess`方法扮演了类似的角色...
无论应用中有多少个子应用,都只需要配置一个ActionServlet即可,因为ActionServlet支持多线程处理。 2. **映射ActionServlet** ```xml <servlet-mapping> <servlet-name>action</servlet-name> *.do </...
在Struts中,一个典型的流程是用户发送HTTP请求到ActionServlet,ActionServlet根据配置文件(struts-config.xml)将请求转发到相应的Action,Action处理业务逻辑后,可能会返回一个ActionForward对象,指示控制器...