Forward高, Redirect低, 因为Redirect的流程是这样的, request 1 sent to server, server return back to client, request 2 then sent to server. But Forward 仅在server side处理, 对client side 是透明的. 由于Redirect 有两次传输, 所以效率低.
范围:
由于对request.setAttribute() 来说, 它携带的对象生存范围只在request内, 所以Redirect方式会导致request携带的对象丢失.
Redirect=”true”
浏览器重定向
比喻,就像人在浏览器的地址栏中重新输入了网址,然后转向该网址一样,只是,这个不是由人输入的,是程序控制的而已。
特点:
1. 可以转到任意网页,无论是本站点的,还是别的站点。
例如可以用此方法从自己的网站跳到sohu主页^_^
感觉似乎有点像js的location.href
2. request会被清空
可以理解,你在浏览器里面重新输了一个地址,难道request还能够被传过去吗?
3. form表单中的东东会被清空
即使是跳到同一个页面,form中的东东也会被清空。(连request都没有保住,form中的东东难道还能苟延残喘吗?)
4. 。。。
Redirect=”false”
服务器端跳转
比喻:服务器把用户的请求转到了另一个地方
特点:
1. 只能在一个web服务中跳转
那当然了,你难道还把自己服务的请求(request)转到sohu去吗?人家人都不认识你,理不理你都还不一定呢,不要自作多情
2. request保留
嘿嘿,用redirect=”false”就是冲这个了
3. form表单会保留
同2
用处:
例如,一个修改功能,修改完后,肯定要返回页面咯,若保存的时候出错,返回可以用redirect=”false”,让用户填的东东还在上面, 可以修改了再提交。若保存成功,则用户填的那些东东就不用要了,可以redirect=”true”了,把那些东东保留着,还容易让用户错觉觉得没有成功 呢
注意事项:
redirect=”true”时,由于request会被清掉,所以提示信息需要保存到session中(保存到哪儿随你啦,反正保存到request中会没掉)
redirect=”false”就没有关系了,request/session随便用,
分享到:
相关推荐
### Forward与Redirect解析 在Web开发中,Forward(转发)与Redirect(重定向)是两种常见的页面跳转方式。它们虽然都可以实现从一个页面跳转到另一个页面的功能,但在实现机制、应用场景以及对用户浏览器地址栏的...
在Web开发中,"转发"(Forward)和"重定向"(Redirect)是两种常见的请求处理方式,它们在实现客户端和服务器之间的交互时起到至关重要的作用。了解它们的区别对于优化用户体验和提高应用性能至关重要。 首先,让...
但通过`ServletContext.getContext()`方法并设置`crossContext`属性为`true`,可以在不同Web应用程序之间进行转发。例如: ```xml ... <param-name>crossContext <param-value>true ... ``` 然后,你...
4. **重定向**:使用ActionForward的`redirect`属性可以实现HTTP重定向,这种情况下不会进行服务器端的转发,而是直接返回一个HTTP 302状态码,告诉浏览器去访问另一个地址。 #### 四、ActionForward的最佳实践建议...
3. 效率:`forward()`通常比`redirect()`更高效,因为它不需要浏览器再次发起请求。 4. 范围:`forward()`通常用于转发到应用程序内部的资源,而`redirect()`可以重定向到任何URL,包括外部站点。 5. 使用场景:`...
5. **JSP语法**:`<jsp:forward page="..."/>`标签的`page`属性应指向JSP页面的URL,而不是Action的名字。如果想要调用Action,应该使用Struts2的标签库,如`<s:actionexecute/>`或`<s:redirect/>`。 解决“no ...
在这个例子中,`name`属性指定了这个`ActionForward`的名称,`path`属性定义了转发的目标路径,而`redirect`属性则表示是否需要执行重定向操作。 ### 全局转发配置 除了在Action类中动态创建并返回`ActionForward`...
4. **ActionForward与Redirect**:ActionForward不仅限于在同一个应用内的转发,还可以实现重定向(Redirect)。重定向意味着浏览器将发出一个新的HTTP请求,而不仅仅是服务器端的内部跳转。这可以通过在`path`属性...
### Struts1 Table标签中Logic的使用属性 在Struts框架中,`table`标签用于在JSP页面中展示数据,而`Logic`标签则提供了条件判断的能力,这对于动态显示内容非常有用。以下是对给定文件中提到的Logic标签属性进行...
2. **ActionForward的结构**:ActionForward对象包含四个主要属性:path(目标路径)、name(逻辑名)、redirect(是否重定向)和contextRelative(路径是否相对于应用上下文)。这些属性通过不同的构造函数进行初始...
涵盖了Web项目答辩问题的多个方面,包括页面间的参数传递、hidden表单域的作用、jsp的内置对象、request和session的作用、jsp动作、servlet API中的forward和redirect、class.forName的作用、分页的实现、cookie被...
一、转发(Forward) 在 SpringMVC 中,转发是通过 `RequestDispatcher` 对象实现的。`RequestDispatcher` 对象可以将请求转发到另一个资源上,而不改变浏览器的 URL 地址栏。转发的过程中,请求对象和响应对象可以...
JSP 中页面跳转有两种常用的方式:重定向(Redirect)和转发(Forward)。 重定向(Redirect) 重定向是将客户端重定向到另一个 URL,这个过程会产生第二次请求。使用 `response.sendRedirect(path)` 方法可以实现...
Servlet 中有两种页面跳转方式:forward() 和 redirect()。 * forward():一次请求,在容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址。 * redirect():两次请求,完全的跳转,浏览器将会得到...
其中 `redirect` 属性表示资源跳转的方式,默认为请求转发,如果设置为 `true` 表示重定向。 #### 五、Action标签中 `<forward>` 子标签与 `<global-forward>` 中 `<forward>` 子标签的区别 - **Action标签中 `...
- forward确实发生在服务器端,而redirect发生在客户端,且forward不会触发浏览器再次提交请求,而redirect会。 #### 题目四:动态包含 下列哪一个表示动态包含? - `<jsp:include file="top.jsp"/>` - `...
其中`redirect`属性表示资源跳转的方式,默认为请求转发;若设置`redirect="true"`,则表示重定向。 #### 五、Action标签中`<forward>`子标签与`<global-forwards>`中`<forward>`子标签的区别 - **局部转发**:...
1. **Forward 和 Redirect 区别** - Forward(转发)是服务器内部操作,它不会改变URL地址,浏览器看到的始终是最初的请求URL,而服务器在后台处理请求并调用其他资源。 - Redirect(重定向)则是服务器向浏览器...
### Java面试题之Forward与Redirect的区别 #### Forward 1. **概念**: `Forward`是一种服务器端请求跳转的方式,通过`RequestDispatcher`接口中的`forward()`方法实现。 2. **作用**: `Forward`可以将当前请求转发...