`

jsp:forward标签与response.sendRedirect()的区别

    博客分类:
  • jsp
 
阅读更多

在网上看到一些帖子,总结了一些区别,可以从以下几个方面来看:

1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容

再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

redirect等于客户端向服务器端发出两次request,同时也接受两次response

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:
不能共享数据.

redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,

甚至是使用绝对URL重定向到其他站点的资源.

forward,方法只能在同一个Web应用程序内的资源之间转发请求.

forward 是服务器内部的一种操作.
redirect
是服务器通知客户端,让客户端重新发起请求.

所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "


3.
从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

4.从效率来说
forward:
.
redirect:
.

5.jsp 语法

<jsp:forward page={"relativeurl" | "<%= expression %>"} />

或者这样写:

<jsp:forward page={"relativeurl" | "<%= expression %>"} >


<jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+


</jsp:forward>

6.例子

<jsp:forward page="/servlet/login" />

<jsp:forward page="/servlet/login">

<jsp:param name="username" value="jsmith" />

</jsp:forward>

描述

<jsp:forward>标签从一个jsp文件向另一个文件传递一个包含用户请求的request对象.<jsp:forward>标签以下的代码,将不能执行.

                                                                               
你能够向目标文件传送参数和值,在这个例子中我们传递的参数名为username,值为scott,如果你使用了<jsp:param>标签的话,目标文件必须是一个动态的文件,能够处理参数.


如果你使用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。
如果在你使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错.

属性

page="{relativeurl | <%= expression %>}"
这里是一个表达式或是一个字符串用于说明你将要定向的文件或url.这个文件可以是jsp,程序段,或者其它能够处理request对象的文件(asp,cgi,php).

<jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+
向一个动态文件发送一个或多个参数,这个文件一定是动态文件.

如果你想传递多个参数,你可以在一个jsp文件中使用多个<jsp:param>name指定参数名,value指定参数值.

<jsp:forward>例子

<%@ page contentType="text/html;charset=gb2312" %>

<html>

       <head>

              <title>test</title>

       </head>

       <body>

              <jsp:forward page="forwardTo.jsp">

                     <jsp:param name="userName" value="riso"/>

              </jsp:forward>

       </body>

</html>

forwardTo.jsp

<%@ page contentType="text/html;charset=gb2312" %>

<!--forwardTo.jsp-->

<%

       String useName=request.getParameter("userName");

       String outStr= "谢谢光临!";

       outStr+=useName;

       out.println(outStr);

%>

redirect的例子:

譬如:client 通过XXX\index.jsp?name=gauss&pwd=123访问index.jsp,index.jsp中有< jsp:forward page="login.jsp"/>,则在login.jsp中可以通过request.getParameter()得到namepwd,而<%response.sendRedirect("login.jsp");%>得不到。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhengcandan/archive/2008/10/24/3138627.aspx

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/goodguyzl/archive/2009/09/08/4533340.aspx

 

分享到:
评论

相关推荐

    jsp response.sendRedirect不跳转的原因分析及解决

    重要的是,当使用sendRedirect时,浏览器地址栏中的URL会发生变化,这与&lt;jsp:forward&gt;标签直接在服务器端进行转发不同,后者不会改变浏览器地址栏中的地址。 遇到sendRedirect不跳转时,可能存在以下几个原因: 1....

    jsp:forward方法实例

    请求转发与URL重定向(`response.sendRedirect()`)有显著区别。URL重定向会向客户端浏览器发送一个HTTP响应,告知浏览器加载新的URL,从而创建了一个新的HTTP请求。而`jsp:forward`是在服务器端完成的,用户浏览器...

    sendRedirect()和forward()

    sendRedirect()和forward()方法的区别 sendRedirect()和forward()方法都是Servlet编程中常用的方法,它们可以将客户端的请求重定向或转发到其他的资源,如Servlet、JSP页面或HTML文件中。但是,这两个方法之间存在...

    数据库测试test.sql

    response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); } public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //...

    JSP中5种跳转foward,request等等的详细区别

    JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:forward、RequestDispatcher.include() 和 HttpServletResponse.sendRedirect()。下面我们将详细介绍这五种跳转方式的区别...

    JSP页面的五种跳转方法

    这里主要介绍五种常见的JSP页面跳转方法,包括RequestDispatcher.forward()、response.sendRedirect()、&lt;jsp:forward page="" / &gt;、Meta标签以及JavaScript的location对象。 1. RequestDispatcher.forward() 这种...

    forward PK sendredirect

    在Web开发中,"forward"和"sendRedirect...总结来说,`jsp:forward`和`response.sendRedirect`各有优势,选择哪种方式取决于具体的需求和场景。理解它们的工作原理和差异,可以帮助我们更合理地设计Web应用程序的流程。

    jsp的跳转方式总结

    &lt;jsp:forward page/&gt; 标签是 JSP 中的一种跳转方式,该标签可以实现同主机跳转。 规则: * 不能在 &lt;jsp:forward page/&gt; 之前使用 out.flush(),否则将抛出 java.lang.IllegalStateException 异常。 * 跳转后,...

    JSP三种跳转方式 超级好的范例

    本文将详细介绍JSP中的三种跳转方式:`response.sendRedirect()`、`response.setHeader("Location", "")`以及`&lt;jsp:forward page=""/&gt;`,并结合实例说明它们的特点及使用场景。 #### 一、`response.sendRedirect()`...

    小结jsp页面跳转问题

    通过本文档,我们将深入探讨几种常用的JSP页面跳转方式:`response.sendRedirect()`、`response.setHeader()`以及`&lt;jsp:forward&gt;`指令,并通过具体的示例代码来解析这些方法的工作原理及注意事项。 #### 一、`...

    JSP与Servlet传值技术总结

    4. jsp forward指令:使用&lt;jsp:forward&gt;指令来传递数据,例如:&lt;jsp:forward page="Head.jsp"&gt;&lt;jsp:param name="a" value="a"/&gt;&lt;/jsp:forward&gt; 所有这些方法都可以使用getParameter()方法来获取传递的数据。 ...

    JSP跳转方式总结.doc

    本文将重点讨论两种主要的JSP跳转方式:`RequestDispatcher.forward()` 和 `response.sendRedirect()`,以及JSP标签 `&lt;jsp:forward page=""&gt;`。 1. `RequestDispatcher.forward()` `RequestDispatcher.forward()` ...

    JSP页面跳转的五种方法

    本文将详细介绍JSP页面跳转的五种方法:`RequestDispatcher.forward()`、`response.sendRedirect()`、`jsp:forward`、修改HTTP header `Location`以及利用`&lt;meta&gt;`标签实现自动跳转。 #### 1. RequestDispatcher....

    Response,内置对象.

    与客户端跳转不同,服务器端跳转使用`&lt;jsp:forward&gt;`标签或`response.sendRedirect()`方法(但参数不同)。服务器端跳转不会在浏览器的地址栏显示新的URL,而且可以携带请求属性。`&lt;jsp:forward&gt;`是立即跳转,而`...

    jsp和servlet中实现页面跳转的方式实例总结.docx

    使用 response.sendRedirect 方法可以将请求重定向到另一个 JSP 页面。例如: ```jsp response.sendRedirect("test2.jsp"); %&gt; ``` 3. 使用 forward 标签 使用 forward 标签可以将请求转发到另一个 JSP 页面。...

    jsp跳转的五种方式

    与 `RequestDispatcher.forward()` 不同,`response.sendRedirect()` 是一种客户端的跳转方式。这意味着它可以在用户的浏览器端完成跳转操作,并且可以携带参数进行传递。例如,从一个页面传递参数到另一个页面。 *...

    jsp页面跳转的五中方法

    本文将详细介绍五种常用的JSP页面跳转方法:`RequestDispatcher.forward()`、`response.sendRedirect()`、`jsp:forward`、`request.getRequestDispatcher().include()`以及`&lt;jsp:include&gt;`。这些方法各有特点,适用...

    JSP页面跳转方法汇总

    与`sendRedirect`不同,`&lt;jsp:forward&gt;`不会创建一个新的请求,而是将当前请求的控制权转移给另一个资源,这意味着所有请求参数以及`request`和`session`作用域中的属性都会被保留并传递给目标资源。 这种跳转方式...

    JSP几种页面间传递参数实现的方法

    还可以实现使用jsp:forward动作做页面跳转时传递参数,如下:&lt;jsp:forward page="Relative URL"&gt; &lt;jsp:param name="paramname" value="paramvalue" /&gt; &lt;/jsp:forward&gt; 通过这种方式和一般的表单参数一样的,也可以...

    Jsp-note.doc

    - 重定向(`response.sendRedirect()`)与转发不同,它创建新的请求,不会保留原始请求的数据。 **JavaBean动作**:JSP支持使用JavaBean组件,通过`jsp:useBean`、`jsp:setProperty`和`jsp:getProperty`等动作来...

Global site tag (gtag.js) - Google Analytics