`
littlefish
  • 浏览: 27604 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

关于struts-config.xml中的forward

阅读更多

今天在修改以前项目的时候发现一个bug,在action中用request.setAttribute设置了一个变量,在返回jsp页面后用request.getAttribute去获取这个变量,但是取到的总是空值,检查了半天,突然想起来,这是之前遇到过的一个问题,应该是在struts-config.xml中的forward配置中的redirect="true"引起的,上次出现这个问题,只是改了,没有认真研究,这回要仔细看看,省得以后再忘。

redirect="true"时,会调用sendRedirect进行定向,而sendRedirect定向采用的时"(HTTP status 302 )。

               再浏  览器发生页面改变

以下是从网上找到的一些对forward的分析:

   redirect="false"时采用的是server-side forward端的定向

public void sendRedirect(String location)
        throws IOException {

        if (isCommitted())
            throw new IllegalStateException
                (sm.getString("coyoteResponse.sendRedirect.ise"));

        // Ignore any call from an included servlet
        if (included)
            return;

        // Clear any data content that has been buffered
        resetBuffer();

        // Generate a temporary redirect to the specified location
        try {
            String absolute = toAbsolute(location);

//    public static final int SC_FOUND = 302;
            setStatus(SC_FOUND);
            setHeader("Location", absolute);
        } catch (IllegalArgumentException e) {
            setStatus(SC_NOT_FOUND);
        }

引起的结果是:

如果采用redirect=true,那么request是传寄不再下一个页面, 而false是可以

 

 

forward是不能跨context转发的(例如:/context1/url 的不能用forward 转发到 /context2/url 中去),但是redirect就可以(因为它是浏览器端转发的,是服务器端发送一个http头部信息302,浏览器根据这个信息再进行转发).

如果是用forward转发的话,因为是内部(容器中)转发的,所以也就不用再经过过滤器(filter)的过滤了,但是redirect就要(因为它是多次向服务器请求).


由于forward会屏蔽转发的url,所以呢,当刷新页面时还是向原来的Url进行请求,所以会引起重复提交的问题。

 

 

 

分享到:
评论

相关推荐

    struts-config.xml配置文件详解

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

    struts-config.xml

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

    配置struts--config.xml详解

    在 Struts 应用程序中,`struts-config.xml` 文件是核心配置文件,它定义了应用的行为、控制器(Actions)、数据源(Form Beans)以及视图(JSP 页面)之间的关系。本文将深入探讨 `struts-config.xml` 的主要元素和...

    struts-config.xml配置

    Struts框架支持基于XML的表单验证,这允许在`struts-config.xml`中定义验证规则,或者在ActionForm类中实现自定义的校验逻辑。 ```xml <global-validators> <validator name="required" path="/WEB-INF/validators...

    org.springframework.web.struts-3.1.0.M2.jar

    同时,Struts的配置文件(struts-config.xml或struts2的struts.xml)也需要进行相应的调整,引入Spring的插件和配置信息。 `springframework-license.txt`文件则包含了Spring框架的许可协议,它规定了软件的使用、...

    struts-config.xml 详解

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

    Struts-config.xml 配置详解.doc

    Struts-config.xml是Struts框架的核心配置文件,用于定义应用程序的行为和组件间的交互。这个XML文件按照特定的结构和约定来组织,包含了多个主要元素,这些元素定义了数据源、表单bean、全局转发、动作映射、控制器...

    struts-config.xml文件的配置

    以下是关于struts-config.xml文件配置的详细说明: 1. **数据源配置(Data Sources)**: - `<data-sources>` 元素用于定义Web应用所需的数据源。在这个例子中,我们看到一个名为"data-source"的元素,用于具体...

    struts-1.3.8-all.zip

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

    jakarta-struts-1.1.zip_jakarta-Struts-1_jakarta-struts 1_jakarta

    配置文件(struts-config.xml)定义了应用的路由规则、数据源和其他设置。Tiles是一个扩展,允许开发者创建可重用的页面布局。JSP Tags(Struts Tags)是定制的JSP标签库,简化了视图层的开发,如表单、数据展示等。...

    struts-1.3.8.rar

    ActionServlet是Struts框架的核心Servlet,负责解析HTTP请求,根据`struts-config.xml`中的配置调用相应的Action。 10. **标签库**: Struts 1提供了一系列自定义JSP标签,如`<html:form>`、`<bean:write>`等,...

    在struts1中使用拦截器——saif-0.1.jar

    通过在配置文件(struts-config.xml)中声明和组合拦截器,我们可以灵活地控制请求的流程。 在saif-0.1.jar这个库中,可能包含了自定义的拦截器实现。这些拦截器可能为Struts1框架提供了特定的功能增强,例如优化...

    Struts_config.xml详解

    Struts框架的核心配置文件`struts-config.xml`是整个应用的关键组成部分之一,它定义了应用程序中各个组件(如Action、FormBean等)的行为与交互方式。本文将详细介绍`struits-config.xml`中的关键配置项,并解释其...

    struts-1.2.9-lib.zip

    - `struts-config.xml`是Struts的主配置文件,定义了Action、Form Beans、Forward、Plug-In等组件。 6. **动作映射与处理**: - Struts通过`ActionMapping`对象将HTTP请求映射到特定的Action类,Action类负责业务...

    Struct-config.xml的配置文件

    总之,`Struct-config.xml`配置文件是Struts框架中不可或缺的部分,它定义了应用的路由规则、ActionForm Bean的使用、Action的处理逻辑以及异常处理和视图转发策略。正确理解和配置这个文件是开发Struts应用的基础。

    struts-1.3.10.zip

    4. **struts-config.xml**:框架的配置文件,定义了Action、ActionForm、ActionMapping等元素,以及请求到Action的映射关系。 5. **Tiles**:Struts 1.3.x引入了Tiles框架,它允许开发者创建可重用的页面布局,提高...

    Struts-API.rar_API_struts api

    4. **ActionMapping**:在struts-config.xml中定义,它将URL映射到特定的Action,同时可以包含关于Action的其他信息,如表单Bean、-forward等。 5. **RequestProcessor**:负责初始化ActionServlet,处理请求并调用...

    struts-1.x框架所需jar包整合

    - 编写Struts-config.xml,定义ActionMapping、Form Beans、ActionForward等。 - 实现Action和ActionForm类,处理业务逻辑和用户输入。 - 使用Struts标签库在JSP页面上展示结果。 5. **注意事项** - 确保所有...

Global site tag (gtag.js) - Google Analytics