Servlet跳转
2016-03-09 15:37
169 查看
1、Forward
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/forwardServlet");
dispatcher.forward(request,response);
2、Redirect
重定向是利用服务器返回的状态码来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。
如果服务器返回301,302,则浏览器会到新的网址重新请求该资源。
状态码301表示永久重定向,302表示临时重定向。
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location","www.baidu.com");
3、Refresh
自动刷新不仅可以实现一段时间之后自动跳转到另一个页面,还可以实现一段时间之后自动刷新本页面。
response.setHeader("Refresh","1000;URL=www.baidu.com");
区别:
forward是服务器行为,请求了一次服务器,不会导致request对象内容丢失,浏览器地址栏URL不会改变;而redirect是浏览器行为,请求了
两次服务器,会导致request内容丢失,浏览器地址栏中URL会发生改变。
PS:
至于为什么forward是服务器行为,而Redirect是客户端行为,推荐阅读博文:http://blog.csdn.net/bluishglc/article/details/7953614
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/forwardServlet");
dispatcher.forward(request,response);
2、Redirect
重定向是利用服务器返回的状态码来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。
如果服务器返回301,302,则浏览器会到新的网址重新请求该资源。
状态码301表示永久重定向,302表示临时重定向。
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location","www.baidu.com");
3、Refresh
自动刷新不仅可以实现一段时间之后自动跳转到另一个页面,还可以实现一段时间之后自动刷新本页面。
response.setHeader("Refresh","1000;URL=www.baidu.com");
区别:
forward是服务器行为,请求了一次服务器,不会导致request对象内容丢失,浏览器地址栏URL不会改变;而redirect是浏览器行为,请求了
两次服务器,会导致request内容丢失,浏览器地址栏中URL会发生改变。
PS:
至于为什么forward是服务器行为,而Redirect是客户端行为,推荐阅读博文:http://blog.csdn.net/bluishglc/article/details/7953614
相关文章推荐
- 《JAVA与模式》之适配器模式
- RHEL7密码恢复
- maven 项目(一) 多项目多层级搭建配置及其优点
- 删除sqlserver代理任务脚本
- C#中DataTable中的Compute方法使用收集
- 打印较长的json数据Log
- 彻底解决PHP Session不过期以及SessionId保持不变的问题
- 倒计时CountDownTimer 的是使用
- Java 与 iOS 的时间浮点型之间的互相转换
- Python学习(三) 八大排序算法的实现(下)
- 1093. Count PAT's (25)
- 高级图像去雾算法的快速实现。
- 33. Search in Rotated Sorted Array
- 移动互联网时代的特征
- android.os.NetworkOnMainThreadException
- 查看oracle表空间
- Spring+Mybatis的整合(初步)
- 对应用软件:游戏-《上古卷轴5》的点评
- magento app开发遇到的问题及解决
- iOS开发网络篇—HTTP协议