JSP中forward和redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
  • forward是你所请求的URL所在服务器,把你的请求封装成流传给forward到的目标页面(其中含有以及基本信息以及参数等),而redirect相当于你首先向你所请求的URL申请,然后此URL给你一个新的URL,你再向此新URL再来一次新的请求,所以浏览器地址栏会变,而且接受不到原先传的参数
<jsp:forward>
重定向一个html文件,jsp文件,或者是一个程序段.

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

or

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


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


</jsp:forward>




例子
<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);

%>


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSPforwardredirect是两种常见的页面跳转方式。它们的区别如下: 1. forward forward是一种服务器端跳转方式,它可以将当前请求转发给另一个JSP页面或Servlet进行处理。在JSP,可以使用RequestDispatcher的forward()方法来实现forward操作,例如: ``` RequestDispatcher rd = request.getRequestDispatcher("target.jsp"); rd.forward(request, response); ``` 在这个例子,当前请求将被转发到target.jsp页面进行处理。需要注意的是,forward操作是在服务器端完成的,客户端浏览器不知道这个操作的存在,因此在浏览器地址不会显示目标页面的地址。 2. redirect redirect是一种客户端跳转方式,它可以将当前请求重定向到另一个URL地址。在JSP,可以使用response的sendRedirect()方法来实现redirect操作,例如: ``` response.sendRedirect("target.jsp"); ``` 在这个例子,当前请求将被重定向到target.jsp页面进行处理。需要注意的是,redirect操作是在客户端浏览器完成的,因此浏览器会向服务器发送一次新的请求地址会显示目标页面的地址。 3. 区别 (1)执行顺序不同 forward是在服务器端执行的,它的执行顺序是先执行当前页面的代码,然后再执行目标页面的代码。而redirect是在客户端执行的,它的执行顺序是先执行当前页面的代码,然后向客户端发送重定向指令,客户端再向服务器发送一次新的请求,最后执行目标页面的代码。 (2)数据传递方式不同 forward可以在服务器端共享请求对象的数据,因为它是在同一个请求进行的。而redirect不能在两个请求之间共享数据,因为它是两个独立的请求。 (3)地址栏显示方式不同 forward不会改变客户端浏览器地址栏,因为它是在同一个请求进行的。而redirect会改变客户端浏览器地址栏,因为它是两个独立的请求。 总之,forwardredirect是两种不同的页面跳转方式,开发者需要根据实际情况选择合适的方式来实现页面跳转。如果需要在两个页面之间共享数据,可以使用forward方式;如果需要重定向到一个新的URL地址,可以使用redirect方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值