`

getRequestDispatcher 和sendRedirect区别

    博客分类:
  • JSP
 
阅读更多
request.getRequestDispatcher()是请求转发,前后页面共享一个request response.sendRedirect()是重新定向  前后页面不是一个request

getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页。
sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。


1.getRequestDispatcher分成两种,可以用request调用,也可以用getServletContext()调用

 SecondServlet
    request.setAttribute("lover", "tom");
    request.getSession().setAttribute("lovered", "joe");

    request.getRequestDispatcher("/third?name=jay").forward(request, response);
    或
    request.getRequestDispatcher("third?name=jay").forward(request, response);
    或
    this.getServletContext().getRequestDispatcher("/third?name=jay").forward(request, response);


 ThirdServlet
    PrintWriter out = response.getWriter();
    String name = request.getParameter("name");
    out.println(request.getContextPath()+"<hr/>");
    out.println("name="+name+"<hr/>");
    out.println("lover="+request.getAttribute("lover")+"<hr/>");
    out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");
 

结果显示,地址栏信息仍为http://localhost:8080/Test/second,这三种方式都可以传值到第二个Servlet。

2.sendRedirect只能用response调用,可以用相对路径(直接用),也可以用相对路径(需加应用路径)
 SecondServlet
    request.setAttribute("lover", "tom");
    request.getSession().setAttribute("lovered", "joe");

    response.sendRedirect("third?name=jay");
    或
    response.sendRedirect(request.getContextPath()+"/third?name=jay");
   


 ThirdServlet
    PrintWriter out = response.getWriter();
    String name = request.getParameter("name");
    out.println(request.getContextPath()+"<hr/>");
    out.println("name="+name+"<hr/>");
    out.println("lover="+request.getAttribute("lover")+"<hr/>");
    out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");
  


结果显示,地址栏信息变为http://localhost:8080/Test/third?name=jay,只有request.getAttribute("lover")获取不到值,session范围及url路径后的传值在第二个Servlet都可以获取到值。
   response.sendRedirect("http://www.baidu.com");

经测试只有这样写,才能重定向到百度首页。
分享到:
评论

相关推荐

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

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

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

    1. 请求转发和重定向的本质区别: - `RequestDispatcher.forward()`方法的转发是在服务器端进行的。服务器从一个资源接收客户端请求,然后调用另一个资源来处理该请求。在这个过程中,客户端不知道服务器内部转发了...

    response_sendRedirect和request_getRequestDispatcher()_forward的区别.

    而sendRedirect方法可以让你重定向到任何URL。 表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu...

    Servlet跳转方式sendReDirect

    在Servlet中,有两种主要的跳转方式:`RequestDispatcher.forward()`和`ServletResponse.sendRedirect()`。这两种方法在处理客户端请求时有不同的行为和应用场景。 1. `RequestDispatcher.forward()` - `forward()...

    forward-sendRedirect

    在Java Web开发中,"forward-sendRedirect"是一个关键的概念,主要涉及到Servlet和JSP之间的页面跳转技术。这里我们将深入探讨这两个方法的工作原理及其在实际应用中的差异。 首先,我们来了解一下`forward()`方法...

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

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

    数据库测试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`。这...

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

    JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:forward、RequestDispatcher.include() 和 HttpServletResponse.sendRedirect()。下面我们将详细介绍这五种跳转方式的区别...

    java web知识集锦.doc

    本文将深入探讨`RequestDispatcher`和`sendRedirect()`之间的主要区别,并通过实例帮助理解如何在实际项目中正确使用这两种技术。 #### RequestDispatcher详解 `RequestDispatcher`接口提供了在服务器端进行请求...

    转发和重定向的区别 forward和redirect的区别

    它们的主要区别在于请求处理流程、URL改变以及数据共享方式。 1. 转发(Forward): - 使用`RequestDispatcher.forward()`方法实现。 - 请求转发是在服务器内部完成的,客户端浏览器并不知情。这意味着,浏览器的...

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

    直接请求转发和间接请求转发的主要区别在于请求处理的方式和用户感知。直接转发在服务器内部进行,不改变URL,保留请求状态;而间接转发通过浏览器重新发起请求,URL变化,请求状态丢失。在设计Web应用时,需要根据...

    JSP_页面跳转,JSP_页面跳转

    理解并掌握这两种跳转方式的区别和适用场景,对于提升个人开发技能及项目质量具有不可忽视的作用。在未来的学习和实践中,持续探索和优化页面跳转的策略,将有助于我们在复杂多变的Web环境中,为用户提供更加顺畅和...

    javaServlet请求转发和重定向.pdf

    * forward() 方法的调用者与被调用者之间共享相同的 request 对象和 response 对象,而 sendRedirect() 方法调用者和被调用者使用各自的 request 对象和 response 对象,它们属于两个独立的请求和响应过程。...

    JSP与Servlet传值技术总结

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

    JSP面试容易问到的问题

    总之,了解`forward`与`sendRedirect`的区别以及`&lt;%@ include %&gt;`与`&lt;jsp:include&gt;`的用法对于掌握JSP和Servlet的基本原理非常重要。同时,深入理解JSP与Servlet的工作机制有助于开发者更好地设计和实现复杂的应用...

    请求重定向个请求分派

    sendRedirect() 方法将生成 302 响应码和 Location 响应头,从而通知客户端去重新访问 Location 响应头中指定的 URL。 sendRedirect() 方法的定义语法如下: public void sendRedirect(String location) throws ...

    请求转发和重定向的区别共1页.pdf.zip

    本篇文章将详细解析请求转发与重定向的区别。 一、请求转发(Request Forwarding) 1. 定义:请求转发是在服务器端完成的内部操作,它不涉及客户端浏览器的任何更改。当服务器接收到一个请求后,可以决定将该请求...

Global site tag (gtag.js) - Google Analytics