java在日常工作和学习中的使用愈加广泛,关于它的知识点繁多,数不胜数。今天就来为大家介绍下,java
servlet中forward和redirect的不同点,并且详细地为大家进行解析说明。
第一点:从地址栏显示来看:
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。也就是说,浏览器完全不知道服务器发送的内容从何而来,所以它的地址栏还是原来的地址。
而redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL。因此redirect等于客户端向服务器端发出两次request,同时也接受两次response。
第二点,从数据共享来看:
forward:转发页面和转发到的页面可以共享request里面的数据。但是它的方法只能在同一个Web应用程序内的资源之间转发请求。它是服务器内部的一种操作。
redirect:不能共享数据。它不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源。它甚至可以使用绝对URL重定向到其他站点的资源。它是服务器通知客户端,让客户端重新发起请求。
所以,可以这么说,redirect 是一种间接的请求, 但是不能说"一个请求是属于forward还是redirect "。
第三点,从运用地方来看:
forward:一般用于用户登陆的时候,根据角色转发到相应的模块。
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。
第四点,从效率上来看:
forward:高;redirect:低。
第五点,从jsp 语法上来看:
1.代码:
<jsp:forward page={"relativeurl" | "<%= expression %>" } />
2.或者这样写:
<jsp:forward page={"relativeurl" | "<%= expression %>" }> <jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+ </jsp:forward>
第六点,举例说明:
1.先展示一段代码:
<jsp:forward page="/servlet/login.jsp" /> <jsp:forward page="/servlet/login.jsp"> <jsp:param name="username" value="jsmith" /> </jsp:forward>
简要说明一下,
属性如下所示:
表达式:
page = "{relativeurl | <%= expression %>}"
上面是用来说明我们将要定向的文件或url.这个文件可以是jsp,程序段,或者其它能够处理request对象的文件(如asp,cgi,php)。
表达式:
<jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+
如果是向一个动态文件发送一个或多个参数,这个文件一定是动态文件。如果想传递多个参数,可以在一个jsp文件中使用多个
下面列举一个<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); %>
以上就是有关java servlet中forward和redirect的不同点的具体内容。想要了解更多java基础,敬请关注奇Q工具网。
推荐阅读: