请求转发(forword)与重定向(sendredirect)的区别
2017-03-22 12:53
555 查看
1. 跳转方式 http://localhost:8080/Test应用 运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。 表单form的action= "/uu ";sendRedirect( "/uu ");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的 "/uu "则代表相对与WEB应用的路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/Test/uu); 2.forward重定向后,浏览器url地址不变,sendRedirect转发后,浏览器url地址变为目的url地址。 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)
相关文章推荐
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- servlet中请求转发(forword)与重定向(sendredirect)的区别