java servlet中forward和redirect的不同点,具体说明

BSO 2020-09-03 10:33:04 java常见问答 5603

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>

简要说明一下,标签从一个jsp文件向另一个文件传递一个包含用户请求的request对象。标签以下的代码,将不能执行;我们可以向目标文件传送参数和值,在上面的例子中我们传递的参数名为username,值为scott,如果我们使用的是标签的话,目标文件必须是一个动态的文件,能够处理参数。但如果我们使用的是非缓冲输出的话,那么使用时就要注意。如果在我们使用之前,jsp文件已经有了数据,那么文件执行就会出错。

属性如下所示:

表达式:

page = "{relativeurl | <%= expression %>}"

上面是用来说明我们将要定向的文件或url.这个文件可以是jsp,程序段,或者其它能够处理request对象的文件(如asp,cgi,php)。

表达式:

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

如果是向一个动态文件发送一个或多个参数,这个文件一定是动态文件。如果想传递多个参数,可以在一个jsp文件中使用多个。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);

%>

以上就是有关java servlet中forward和redirect的不同点的具体内容。想要了解更多java基础,敬请关注奇Q工具网。

推荐阅读:

java对象类型转换,向上转型和向下转型详细介绍

在java中this有哪些功能,它和super的异同在哪?

java super关键字,super和this的区别介绍