`
nannan408
  • 浏览: 1770915 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts1.x有两个execute方法,不要重写错哦HttpServletRequest才是对的(转)

阅读更多
Struts1.x 的 Action 有两个 execute 哦,小心搞错!
by agate - Published: 2008-05-01 [9:42 下午] - Category: 程序编码
不知道各位使用 Struts1.x 的朋友们晓得不晓得,Struts1.x 的 org.apache.struts.action.Action 中有两个 execute 方法,在我们使用 eclipse 的自动完成 override 功能的时候要是不小心给弄错了你就等着迎接一个不报错的空白页面吧!让我们看看代码:

view sourceprint?01.// one execute
02.public ActionForward execute(ActionMapping mapping, ActionForm form,
03.   
HttpServletRequest request, HttpServletResponse response) {
04.   
//code...
05.}
06.// another execute
07.public ActionForward execute(ActionMapping mapping, ActionForm form,
08.   
ServletRequest request, ServletResponse response) {
09.   
//code...
10.}
好,公布结果!只有 override 上面这个 execute 才能起作用。如果你 override 的是下面这个 execute 的话,很不幸,您调用这个 action 的时候响应给你的是一个空白的页面,你也别想得到任何 exception 的提示!

在 eclipse 中我导入了 struts1.x 的 src 路径,并通过 Open Call Hierarchy 查找调用上面第二个 execute 的类时发现竟然没有调用者!换句话说当我们实现第二个 execute 的时候(没有实现第一个 execute ),是根本没用的!程序根本不会调用到我们 override 的那个 execute 只会傻傻地调用第一个 execute 的默认实现,返回一个 null

那第二个 execute 有什么用呢?我觉得他不是用来给我们重写的,看看它的内容:

view sourceprint?01.public ActionForward execute(ActionMapping mapping, ActionForm form,
02.   
ServletRequest request, ServletResponse response)
03.   
throws Exception {
04.   
try {
05.       
return execute(mapping, form,
06.           
(HttpServletRequest) request,
07.           
(HttpServletResponse) response);
08.   
} catch (ClassCastException e) {
09.       
return null;
10.   
}
11.}
在我看来,其实它是为了当一个请求是一个非 http 请求的时候,作为一个前端转换器,重新包装请求和响应,然后才交给真正的,也就是我们的第一个 execute 方法来实现。这个从 src 的注释中我们也可以比较清晰的了解:


Process the specified non-HTTP request, and create the corresponding non-HTTP response (or forward to another web component that will create it), with provision for handling exceptions thrown by the business logic. Return an ActionForward instance describing where and how control should be forwarded, or null if the response has already been completed.

所以……当你重写这个 action 的 execute 方法时,注意咯!是重写那个参数是 http-request/response 的 execute哦!!!

这里严重鄙视一下 struts1.x 的编码态度!
分享到:
评论

相关推荐

    struts1.x和struts2.x区别

    在深入探讨Struts1.x与Struts2.x的区别之前,我们先来了解一下这两个框架的基本背景。Apache Struts是用于构建企业级Web应用程序的开源框架,它提供了MVC(模型-视图-控制器)架构模式的实现,帮助开发者更好地组织...

    struts1.x入门教程

    【Struts1.x入门教程】 Struts1.x是Apache Jakarta项目的一个重要组成部分,它是一个用于构建企业级Web应用程序的开源MVC框架。该框架的主要目标是简化JavaServer Pages(JSP)、Servlet和标签库的使用,同时提升...

    Struts1.x的登录示例

    Struts1.x是一个经典的Java Web框架,它在20世纪末至21世纪初被广泛使用,用于构建基于MVC(Model-View-Controller)架构的Web应用。本示例将探讨如何使用Struts1.x实现一个简单的登录功能。首先,我们需要理解...

    struts1.x多文件上传

    Struts1.x是一个非常经典的Java Web开发框架,它在过去的许多年里被广泛使用。文件上传功能是Web应用中常见的需求之一,特别是在处理用户需要提交多个文件的场景下。Struts1.x提供了处理多文件上传的功能,使得...

    使用struts1.x上传多个文件的一中方法

    在Java Web开发中,Struts1.x框架是一个广泛使用的MVC(Model-View-Controller)框架,它提供了处理用户请求、业务逻辑和视图展示的能力。在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的...

    struts1.x入门

    ### Struts1.x 入门知识点详解 #### 一、Struts 概念与起源 Struts 是一款基于 Java 的开源 MVC(Model-View-Controller)框架,最初由 Apache Jakarta 项目开发。其目的是简化 Web 应用程序的开发过程,并提供一...

    魔乐科技Struts2.x框架笔记

    **Struts2.x与Struts1.x对比**:相较于Struts1.x,Struts2.x具有更多的优势,如不再强制要求ActionForm,配置文件更简洁,处理流程更加清晰。具体而言,请求首先被过滤器捕获,然后根据`struts.xml`文件的配置调用...

    struts1.x 上传下载

    以下是对"struts1.x 上传下载"这个主题的详细解释。 **一、Struts1.x文件上传** 在Struts1.x中,文件上传主要依赖于`org.apache.struts.upload`包中的类。最常用的是`MultipartRequestHandler`,它实现了Servlet ...

    Struts1.x_action

    Struts1.x_action 是一个与Apache Struts 1.x框架相关的资源包,它包含了用于构建基于Java的企业级Web应用程序的组件。Struts是MVC(Model-View-Controller)设计模式的一个实现,它使得开发者可以更有效地管理和...

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    总的来说,Struts1.x和Struts2.x都实现了从JSP页面到Action的数据传递,但在实现方式上有显著差异。Struts1.x依赖于ActionForm,而Struts2.x则使用了更强大的OGNL和拦截器机制。了解这些原理有助于我们更好地理解和...

    struts1.x 异常处理机制

    Struts1.x是一个非常经典的Java Web开发框架,它在处理用户请求时,通过Action类来转发请求并返回相应的视图。然而,在实际开发过程中,难免会遇到各种异常情况,这时候就需要一套有效的异常处理机制来捕获和处理...

    Struts1.x的上传文件示例

    Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts1.x中,实现文件上传功能是一个常见的需求,这通常涉及到处理用户通过表单提交的二进制数据,如图片、文档等。本示例...

    Struts1.x API参考手册+中文帮助

    Struts1.x是一个经典的Java Web开发框架,由Apache软件基金会维护。这个框架主要用来构建基于MVC(Model-View-Controller)模式的Web应用程序。它提供了丰富的功能,包括请求分发、视图渲染、业务逻辑控制以及表单...

    Struts1.x令牌(Token)的使用.rar

    Struts1.x是一个非常经典的Java Web开发框架,它在企业级应用中被广泛使用。而Struts1.x的令牌机制(Token)则是防止重复提交、跨页请求攻击的重要手段。在此,我们将深入探讨Struts1.x令牌的使用方法及其背后的原理...

    struts in action (struts1.x)

    **Struts 1.x 框架详解** `Struts 1.x` 是 Apache 软件基金会...提供的PDF文档资源,如 `Struts(12).pdf`、`Struts(10).pdf` 等,是深入学习 `Struts 1.x` 的宝贵资料,涵盖了框架的各个方面,对初学者尤其有帮助。

    Struts1.x.pdf

    ### Struts 1.x 在MVC架构中的角色与工作流程详解 #### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计...

    搭建struts1.x环境例子源码

    Struts1.x是一个经典的Java Web开发框架,由Apache软件基金会维护,它提供了MVC(Model-View-Controller)设计模式的实现,使得开发者能够更好地组织和管理Java Web应用程序的结构。本例子源码旨在帮助初学者理解并...

    Struts1.x登录示例

    Struts1.x是一个经典的Java Web框架,它在2004年由Apache软件基金会发布,用于构建基于MVC(Model-View-Controller)模式的Web应用程序。这个“Struts1.x登录示例”是为了帮助开发者理解如何在Struts1.x框架下实现...

    struts1.x添加删除

    Struts1.x是一个经典的MVC(Model-View-Controller)框架,它在Java Web开发中被广泛使用,尤其是在早期的项目中。这个“struts1.x添加删除”例子旨在教你如何在Struts1.x框架中实现基本的数据操作,即添加和删除...

Global site tag (gtag.js) - Google Analytics