HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源。

sendRedirect实现请求重定向,forward实现的是请求转发。

在web服务器内部的处理机制也是不一样的。

1. 跳转方式

运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。

表单form的action= "/uu ";sendRedirect( "/uu ");表示相对于服务器根路径。

2.forward重定向后,浏览器url地址不变,sendRedirect转发后,浏览器url地址变为目的url地址。

forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件, 同时forward()无法在后面带参数传递,

比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute( "name ",name)来传至下一个页面.

3. 使用forward重定向的过程,是浏览器先向目的Servlet发送一次Request请求,然后再服务器端由Servlet再将请求发送到目的url,再由服务器端Servlet返回Response到浏览器端。浏览器和服务器一次请求响应。

使用sendRedirect转发的过程,浏览器先向目的Servlet发送一次请求,Servlet看到sendRedirect将目的url返回到浏览器,浏览器再去请求目的url,目的url再返回response到浏览器。浏览器和服务器两次请求响应。

4. forward方法的调用者与被调用者之间共享Request和Response

sendRedirect方法由于两次浏览器服务器请求,所以有两个Request和Response。

如果使用request.setAttribute传递一些属性就需要用forward,如果想要跳转到别的应用的资源,就需要用sendRedirect。

5.无论是forward方法还是sendRedirect方法调用前面都不能有PrintWriter输出到客户端。

forward方法报错: Java.lang.IllegalStateException: Cannot forward after response has been committed

sendRedirect报错:java.lang.IllegalStateException

at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)

总结

以上所述是小编给大家介绍的java 中sendredirect()和forward()方法的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-08-02

java sendredirect报错_java 中sendredirect()和forward()方法的区别相关推荐

  1. java test报错_Java 单元测试报错

    «Java 单元测试报错:Test class should have exactly one public zero-argument constructor» public class Test{ ...

  2. java override报错_java @override 报错处理

    转载自:http://blog.sina.com.cn/s/blog_9c7605530101kl9r.html 一.java @override 报错处理 做项目的时候,同事那边电脑上编译通过的ja ...

  3. 电脑配置java编译报错_java 编译错误

    我有两个简单的代码,ClickMe.java代码为:importjava.applet.Applet;importjava.awt.*;importjava.awt.event.*;publiccla ...

  4. instanceof java 报错_java中instanceof怎么理解?java中instanc 爱问知识人

    1.用法表达式    result = object instanceof class     result:布尔类型.     object:必选项.任意对象表达式.     class:必选项.任 ...

  5. java编码转换报错_Java中BeanUtils的日期转换 代码报错 怎么解决

    Person类:publicclassPerson{privateDatebirthday;publicDategetBirthday(){returnbirthday;}publicvoidsetB ...

  6. 注解报错_Java中的注解使用:全面性的总结一下

    前话: 今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟! 注解的介绍: 在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解 ...

  7. java package报错_Java从入门到精通(一)

    标识符 Java语言中,为各种变量.方法和类等起的名字称为标识符 Java标识符的命名规则: 应以字母.下划线.美元符开头 后跟字母.下划线.美元符或数字 Java标识符大小写敏感,长度无限制 jav ...

  8. java package报错_Java基础知识总结 - 超详细篇(上)

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  9. 子类实现父类接口时注解为啥报错_Java中的注解使用:全面性的总结一下

    前话: 今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟! 注解的介绍: 在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解 ...

最新文章

  1. asp.net网站图片防盗链机制示例代码
  2. 国外计算机音乐专业,音乐留学干货 | 国外电子音乐专业留学如何?
  3. c++异常Try catch
  4. 拉拢中小网站 淘宝百度暗战升级...
  5. oracle查看登录时间黑屏,oracle 11g默认用户名、密码解锁 以及安装后重启黑屏问题.doc...
  6. @Builder(toBuilder=true) 链式初始化对象、修改对象
  7. Spring实战——通过Java代码装配bean
  8. MySQL外键的三种关系
  9. 2058. 笨拙的手指
  10. 数学建模(5.5)相关系数_斯皮尔曼相关系数
  11. 软件需求,概要设计,详细设计(文档)怎么做,做什么?
  12. Unity3d光影烘焙常见缺陷的解决方法【2020】
  13. PostgreSQL年龄的处理
  14. vue启动报错98% after emitting CopyPlugin This dependency was not found:
  15. 对京东全球购的一次投诉
  16. OEM,ODM,OBM,JDM概念
  17. 【数学】手写开根号(牛顿迭代法 | 二分)
  18. 原子性 可见性 有序性_极简主义的内容可见性
  19. 在cmd 中输入了错误mysql命令后,如何退出?
  20. 自己动手模仿 springmvc 写一个 mvc框架

热门文章

  1. 字节序转换 oracle,Oracle10g同字节序跨平台迁移
  2. 提高软件开发、软件维护的效率和质量的利器
  3. 作者:褚金翔(1979-),男,中国农业科学院农业环境与可持续发展研究所助理研究员。...
  4. 以色辨位的Farmer(洛谷P5832题题解,Java语言描述)
  5. 把握不好数组边界的危害(记洛谷P1789题RE+WA的经历,Java语言描述)
  6. 【数据结构与算法】链式栈的Java实现
  7. Reactor和Proactor对比以及优缺点 (netty的底层原理reactor模型)
  8. tomcat的jdbc连接池PoolExhaustedException 1
  9. NIO中Selector分析
  10. matlab V7.0 R14 安装教程