`
feng_tai_jun
  • 浏览: 113037 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

getRequestDispatcher()与sendRedirect()区别(转)

阅读更多
(原文:http://xifeng91.iteye.com/blog/322069)
1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ;
response.sendRedirect()是重新定向,前后页面不是一个request。

2.RequestDispatcher.forward()是在服务器端运行;
HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.
所以RequestDispatcher.forward()对于浏览器来说是“透明的”;
而HttpServletResponse.sendRedirect()则不是。

3.ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径; 而ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径。因为ServletRequest具有相对路径的概念;而ServletContext对象无次概念。

RequestDispatcher对象从客户端获取请求request,并把它们传递给服务器上的servlet,html或jsp。它有两个方法:

1.void forward(ServletRequest request,ServletResponse response)

用来传递request的,可以一个Servlet接收request请求,另一个Servlet用这个request请 求来产生response。request传递的请求,response是客户端返回的信息。forward要在response到达客户端之前调用,也 就是 before response body output has been flushed。如果不是的话,它会报出异常。

2.void include(ServletRequest request,ServletResponse response)

用来记录保留request和response,以后不能再修改response里表示状态的信息。


如果需要把请求转移到另外一个Web App中的某个地址,可以按下面的做法:
1. 获得另外一个Web App的ServletConext对象(currentServletContext.getContext(uripath)).

2. 调用ServletContext.getRequestDispatcher(String url)方法。

eg:ServletContext.getRequestDispatcher("smserror.jsp").forward(request,response);
分享到:
评论

相关推荐

    jsp跳转getRequestDispatcher()和sendRedirect()的区别.docx

    ### jsp跳转getRequestDispatcher()和sendRedirect()的区别 在Java Web开发中,经常会遇到页面间的跳转操作,其中两种常见的方法是`getRequestDispatcher()`和`sendRedirect()`。这两种方式虽然都能实现页面跳转,...

    response_sendRedirect和request_getRequestDispatcher()_forward的区别.

    跳转方式 ...运用forward方法只能重定向到同一个Web应用程序中的一个资源。...Forward代码中的"/uu"则代表相对与WEB应用的路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/Test/uu);

    jsp跳转getRequestDispatcher()和sendRedirect()的区别

    - `RequestDispatcher.forward()`方法的请求转发是在服务器内部进行的,不需要与客户端进行第二次通信,因此速度较快,效率较高。 - `HttpServletResponse.sendRedirect()`方法需要通过客户端再次发送请求,进行二...

    Servlet跳转方式sendReDirect

    - 调用`request.getRequestDispatcher(path).forward(request, response)`,其中`path`参数是一个相对于当前Servlet上下文的路径,用于指定要跳转的目标资源。 - 当使用`forward()`时,请求和响应对象会被传递到...

    forward-sendRedirect

    与`forward()`不同,`sendRedirect()`实际上是向客户端浏览器发送一个HTTP状态码302(临时重定向)或303(见其他),并附带一个新的URL,指示浏览器发起一个新的GET请求到这个新URL。因此,`sendRedirect()`会生成一...

    jsp中页面之间的跳转forward与sendRedirect的区别

    页面之间的跳转可以通过两种方式实现:forward和sendRedirect。 forward:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用”目标文件”/>,例如要跳转到userlist.jsp,可以写: 代码如下: ”userlist...

    JSP页面转向和页面转发的区别

    下面将详细介绍页面转向与页面转发的概念及其区别。 #### 一、页面转向 页面转向(Redirect),通常指的是通过`response.sendRedirect("xx.jsp");`这样的方式进行页面跳转。这种方式实际上相当于客户端重新发起了...

    JSP面试容易问到的问题

    ### JSP面试常见问题解析:Forward与SendRedirect的区别及Include的理解 #### 1. Forward与SendRedirect的区别 在Web开发中,特别是在Java Server Pages (JSP)与Servlets结合使用的场景下,`forward`与`...

    数据库测试test.sql

    request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString...

    java web知识集锦2.doc

    ### Java Web知识集锦:RequestDispatcher与sendRedirect的区别详解 #### 概述 在Java Web开发中,控制页面之间的流转是非常重要的技术之一。通常我们有两种常用的方法:`RequestDispatcher`和`sendRedirect`。这...

    java web知识集锦.doc

    ### Java Web知识集锦:RequestDispatcher与sendRedirect的区别详解 #### 概述 在Java Web开发过程中,开发者经常需要处理用户请求的转发和重定向。这两种机制有助于改善用户体验并简化程序逻辑。本文将深入探讨`...

    页面转向与重定向

    在 Servlet 中,我们可以使用 request.getRequestDispatcher("new.jsp").forward(request, response) 语句来实现转发,而重定向可以使用 response.sendRedirect("new.jsp") 语句来实现。在 JSP 页面中,我们也可以...

    JSP中5种跳转foward,request等等的详细区别

    JSP 中的五种跳转方式详细区别 在 JSP 编程中,跳转是一种常见的技术手段,用于将用户从当前页面重定向到另一个页面。JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:...

    JSP与Servlet传值技术总结

    Session和Application的区别: * Session是会话变量,例如:打开一个网站,Session就存在了,更换页,只要是这个网站的页,Session始终存在,当关闭这个网站的时候,Session就结束了。 * Application是全局变量,不...

    JSP_页面跳转,JSP_页面跳转

    与`sendRedirect()`不同,`forward()`方法是一种服务器端的页面跳转方式,由RequestDispatcher接口提供。通过调用`request.getRequestDispatcher("url").forward(request, response);`,开发者可以在服务器内部将...

    直接请求转发(Forward)和间接请求转发(Redirect)两种区别.docx

    例如,一个Servlet收到请求后,可能会调用`forward()`方法将请求转给JSP页面来生成动态内容,而用户只会看到最初访问的Servlet的URL。 直接请求转发的代码示例: ```java public void doGet(HttpServletRequest ...

    jsp跳转示例代码java

    总结,JSP页面跳转是Java Web开发中的基础操作,理解并熟练掌握`forward()`和`sendRedirect()`的区别和用法对于开发高效、可维护的Web应用至关重要。在实际项目中,应根据需求选择合适的跳转方式,优化用户体验并...

    转发与重定向的区别

    ### 转发与重定向的区别 在Web开发中,转发(Forward)和重定向(Redirect)是两种常见的页面跳转方式。这两种方法虽然都能实现页面的跳转,但其内部工作原理、对客户端的影响以及应用场景都有所不同。本文将详细...

Global site tag (gtag.js) - Google Analytics