`
littlefish
  • 浏览: 27089 次
  • 性别: 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-1.2.9 修改版(增加了对没有配置的path的处理)

    更新内容: 在原来的版本中, 如果一个路径没有在struts-config.xml文件中配置, 返回的是一个404错误页面, 现在, 如果一个请求路径没有在<action-mapping />标签中配置, 我们可以自定义返回的错误页面. 使用示例: ...

    Struts_config.xml详解

    parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该... 注意:如上属性中,forward/include相斥,即二者在同一Action配置中只能存在一个。

    谈谈你对Struts的理解。

     4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml...

    J2EE电子商务系统开发从入门到精通

    2.6.2 Struts-config.xml文件..... 39 2.7 Struts标签库..... 43 2.7.1 Bean标签库..... 43 2.7.2 HTML标签库..... 44 2.7.3 Logic标签库..... 45 2.8 Struts开发环境搭建..... 46 2.8.1 Java平台开发包下载..... 46...

    struts_actionforward.rar_ActionForward_redirect

    ActionForward的使用 1、理解全局和局部ActionForward的概念 2、redirect的使用 3、struts-config.xml文件不允许动态修改 4、理解动态ActionForward,动态的ActionForward是可以运行期修改的

    struts1.x上传实例

    2.struts-config.xml文件配置 <form-beans> <form-bean name="actionForm" type="org.apache.struts.action.DynaActionForm"> <form-property name = "filedata" type = "org.apache.struts.upload.FormFile" /...

    一个最简单的SSH框架

    在 struts-config.xml 中定义 <action-mapping>, ActionServlet 会加载。 2 ) spring 负责业务层管理,即 Service (或 Manager). 1 . service 为 action 提供统计的调用接口,封装持久层的 DAO. 2 .可以写...

    一个struts的action跳转大全

    首先,Struts的ActionServlet接收到一个请求,然后根据struts-config.xml的配置定位到相应的mapping (映射);接下来如果form的范围是request或者在定义的范围中找不到这个form,创建一个新的form实例;取得form...

    Struts原理、开发及项目实施

    Struts的工作原理,如下图2所示: <br/> 控制:通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet...

    SSH开发纪要整合解决四大问题(中文、jar包冲突、延时加载、模块化)文档

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-...

    struts基于mvc的开发代码

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-...

    北京大部分公司的ssh面试题

    用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求...

    struts配置元素详解

    <?xml version=”1.0” encoding=”ISO-8859-1”?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" ...

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    在此需要关注Struts-config.xml文件。 3、加载hibernate: 同加载struts方式类似,选择Myeclipse后在弹出的二级菜单中选择Add Hibernate Capabilities…后提示如下图所示: 可以根据提示,选择Hibernate ...

    java之路-caibanStruts的使用

    2.加入caiban-struts.jar,这个包里其实只有两个类文件,你也可以直接将类文件放到src的某个包下,只要struts-config.xml里配置对就可以了(关于这部分的配置,在下面会讲到) 到现在,基本上已经把struts框架加进去了 3....

    Java通用代码生成实用程序XDoclet(源码包)

    <strutsconfigxml version="1.2" destdir="${conf.struts}" mergeDir="${conf-merge.struts}" /> 像@hibernate.clas、@hibernate.property、@struts.action-forward等等这些特定的注释标签需要去查XDoclet的...

    外文翻译 stus MVC

    The struts-config.xml configuration information is translated into a set of ActionMapping, which are put into container of ActionMappings. (If you have not noticed it, classes that end with s are ...

    Struts in Action中文版

    1.1. 关于本书...............................................................................................................19 1.1.1. 谁创建了 Struts?....................................................

    struts in Action

    1.1. 关于本书...............................................................................................................19 1.1.1. 谁创建了Struts?......................................................

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

Global site tag (gtag.js) - Google Analytics