免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 864 | 回复: 0
打印 上一主题 下一主题

ActionServlet [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-08 15:28 |只看该作者 |倒序浏览

java
.lang.Object
  |
  +--
java
x.servlet.GenericServlet
        |
        +--
java
x.servlet.http.HttpServlet
              |
              +--org.apache.struts.action.ActionServlet
Struts提供了一个缺省版本的ActionServlet类,你可以继承这个类,覆盖其中的一些方法来达到你的特殊处理的需要。ActionServlet继承与
java
x.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
action
com.test.ationservlet.MyActionServlet

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18825/showart_228293.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP