今天在修改以前项目的时候发现一个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文件中配置, 返回的是一个404错误页面, 现在, 如果一个请求路径没有在<action-mapping />标签中配置, 我们可以自定义返回的错误页面. 使用示例: ...
parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该... 注意:如上属性中,forward/include相斥,即二者在同一Action配置中只能存在一个。
4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml...
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...
ActionForward的使用 1、理解全局和局部ActionForward的概念 2、redirect的使用 3、struts-config.xml文件不允许动态修改 4、理解动态ActionForward,动态的ActionForward是可以运行期修改的
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" /...
在 struts-config.xml 中定义 <action-mapping>, ActionServlet 会加载。 2 ) spring 负责业务层管理,即 Service (或 Manager). 1 . service 为 action 提供统计的调用接口,封装持久层的 DAO. 2 .可以写...
首先,Struts的ActionServlet接收到一个请求,然后根据struts-config.xml的配置定位到相应的mapping (映射);接下来如果form的范围是request或者在定义的范围中找不到这个form,创建一个新的form实例;取得form...
Struts的工作原理,如下图2所示: <br/> 控制:通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet...
<?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-...
<?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-...
用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求...
<?xml version=”1.0” encoding=”ISO-8859-1”?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" ...
在此需要关注Struts-config.xml文件。 3、加载hibernate: 同加载struts方式类似,选择Myeclipse后在弹出的二级菜单中选择Add Hibernate Capabilities…后提示如下图所示: 可以根据提示,选择Hibernate ...
2.加入caiban-struts.jar,这个包里其实只有两个类文件,你也可以直接将类文件放到src的某个包下,只要struts-config.xml里配置对就可以了(关于这部分的配置,在下面会讲到) 到现在,基本上已经把struts框架加进去了 3....
<strutsconfigxml version="1.2" destdir="${conf.struts}" mergeDir="${conf-merge.struts}" /> 像@hibernate.clas、@hibernate.property、@struts.action-forward等等这些特定的注释标签需要去查XDoclet的...
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 ...
1.1. 关于本书...............................................................................................................19 1.1.1. 谁创建了 Struts?....................................................
1.1. 关于本书...............................................................................................................19 1.1.1. 谁创建了Struts?......................................................
WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。 本文后面的章节将从数据持久层->业务层->Web层的...