JavaWeb 转发与重定向解读
2015-10-28 19:08
483 查看
转发与重定向解读
什么是转发和重定向?
举例说明:我想去买某件衣服,我找到了你,你呢又不卖这件衣服,但是你知道哪里卖,那么你告诉我,我根据你告诉我的地址去那家店里买,这是重定向。
同样是这个例子:
我想去买某件衣服,我找到了你,你呢又不卖这件衣服,但是你知道哪里卖,你去他的店里买了来交给我,让我感觉就像是在你这里买的一样,这就是转发。
[b]两者有什么区别?[/b]
[b]转发是服务器行为,但是重定向不是,重定向是客户端行为。[/b][b]重定向过程[/b]
[b]浏览器发送http请求——>web服务器接受后发送302状态码响应及对应新的location给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——>服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。[/b]
[b]转发过程[/b]
[b]客户浏览器发送http请求——>web服务器接受此请求——>调用内部的一个方法在容器内部完成请求处理和转发动作——>将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。[/b]
运行效果与实现
注意地址栏的地址变化情况
转发:
这里已经跳转到了test.jsp但是看地址栏当中的数据并不是test.jsp的地址信息,从这里可以看出,转发的过程是服务器的动作,是它帮你把所有的需要的东西拿来给你,不需要你知道怎么拿来的。本例子中只发送了一次请求。
重定向:
这里很明显地址栏的信息变化了,变为含有test.jsp的地址,可以说明是服务器给你地址,浏览器根据这个地址再次发送请求,然后加载的该界面。本例子中客户端浏览器请求了两次。
源代码链接:点击打开链接
相关文章推荐
- plupload:在一个jsp中创建多个上传控件
- Java Web中web.xml文件的作用
- Java Web项目表单数据存入数据库中文乱码解决
- 使用maven构建java/java web项目
- org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:
- java 获取表单传递的值
- java web 接收发送json格式的数据
- MyEclipse中spring_servlet.xml报异常错误:Referenced file contains error(...)For&n
- JAVA WEB 导出 Excel表格
- JAVA WEB 导出 Word
- Tomcat安装、配置、优化及负载均衡详解
- 学习JAVA Web所需技术
- 第4章 JavaBean基础
- Myeclipse中SVN的使用
- javaWeb页面中Ajax原始调用方法,及数据转换成Json的原始方法总结
- 1.29使用hibernate链接oracle数据库出现问题并解决
- 一个struts2奇葩错误
- 过滤器与拦截器的区别
- 欢迎来到我的个人博客~
- web.xml配置项学习笔记