java跳转页面_几种方式实现Javaweb页面跳转

本文详细介绍了JSP中两种页面跳转方式:转发和重定向。转发在服务器内部完成,URL不变,适合处理同一应用内的请求;重定向则会改变URL,防止数据重复提交,常用于跳转到外部资源。注意重定向前后不能有out.flush(),且地址栏会显示新URL。总结来说,转发保持请求,重定向创建新请求。
摘要由CSDN通过智能技术生成

下面说一下jsp实现界面跳转,我们学过的转发和重定向

JSP 跳转方式大约有三种:

1、转发:

request.getRequestDispatcher("1.jsp").forward(request,response);

在服务器组件收到用户请求后。经过它的处理后有传递给了另一个组件。不修改用户的请求码。各组件处理完之后在返回给用户,例如主页面的框架。

用户请求——>服务器——>组件1——>组件2——>服务器——>用户

b014bbc7e9e80b66efa66e4fdd099f56.png

这里发出的请求不变

2、重定向:

response.sendRedirect("success.jsp");

在服务器组件收到用户请求后。经过处理修改用户请求。在返回给用户。这样用户再次使用这个请求就会被动的使用新的请求了。重定向一般是为了防止用户提交完数据后点浏览器刷新或点后退之后产生重复提交)

用户请求-----》服务器-------》组件------>服务器-------》用户-------》新的请求

Center

这里的请求不再是最初的请求,已经被改变了,url地址更换会很明显

注意事项:

1、此语句前不允许有out.flush(),如果有,会有异常:

java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client

at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)

2、这里跳转后,浏览器地址栏会发生变化,意味着url发生变化

3、要是跳到别的主机上,那语句后面的代码会继续执行,相当于开了一个新的线程,但是对于response就没有意义了,因为你看不到了。

3、

注意事项:

1、此语句前也不允许有out.flush(),如果有,会有异常:

2、跳转后浏览器地址栏不变,但是只能跳到当前主机下

3、此语句后面的语句执行完成后才会跳转

4、跳转后得路径变为当前路径,图片不是绝对路径将无法显示

4、在网上,还看到一个:

response.setStatus(302);

response.setHeader("location","newurl");

这种setHeader要结合setStatus(302)使用,302是一个状态吗,标注浏览器要进行重定向了,同时渔具铅也不允许有out.flush(),如果有,不会报异常,只是不跳转页面;跳转后地址栏发生变化

总结: 通过以上的总结,重要一点的是我们必须要知道的转发和重定向,转发是什么:就是用户通过浏览器发送了http请求,而web服务器接受此请求后调用一个内部方法完成请求处理并来一个转发动作将目标资源发送给用户。在这里转发的路径必须是在同一个web容器下的url,不能转到其他的web路径上去,中间传递是自己容器内部的requeset,所以,可以共享request;浏览器地址栏的url地址不会变化,我们也就感受不出来服务器做了转发。

而重定向:是用户通过浏览器发送了http请求,web服务器接受请求后发送302状态码响应(重定向)并且回应客户浏览器一个新的location,当客户浏览器发现时302响应,自动在发送一个新的http请求,请求的url就是新给的location,服务器再根据这个请求寻找相应资源并发送给用户。这里的回应的location可以是任意的url,同时因为浏览器重新发送了http请求,也就不存在request传递的概念。这时候,客户浏览器上的地址栏显示的新的url(重定向后的路径),用户可以看到地址的变化。所以,重定向行为中,浏览器至少做出了两次访问请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值