`
yzzh9
  • 浏览: 18592 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

forward、sendRedirect及Jsp和Servlet之间的跳转

阅读更多
<jsp:forward> 使用同一个 request ,是在服务器端跳转,浏览器显示的是第一个页面的名字,因为客户端(浏览器)不知道它在服务器端跳转了。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

Response.sendRedirect 是两个不同的 request ,是在客户端跳转,浏览器显示的是跳转后的页面的名字。因为它是从客户端跳转到第二个页面的。
 
 
 
使用 forward 时,由于只是发送一次 request 请求, request 设置的属性( setAttribute )依然能保留在下一个页面。

使用 sendRedirect 时,由于发送两次 request 请求,所以在下一个不能获取 request 属性。但可以通过重写 URL 的方式将内容传递过去。

下面举例说明:
tian.jsp    
<%request.setAttribute("river","redwater");
    request.setAttribute("country","daguaiwan");
%>
<jsp:forward page="fengshan.jsp" />
 
 
donglan.jsp    
<%request.setAttribute("river","redwater");
    request.setAttribute("country","daguaiwan");
%>
<a href="fengshan.jsp">fengshan</a>
 
 
bama.jsp    
<%request.setAttribute("river","redwater");
    request.setAttribute("country","daguaiwan");
    response.sendRedirect("fengshan.jsp");
%>
 
 
fengshan.jsp
<%=request.getAttribute("river")%><br/>
<%=request.getAttribute("country")%>
redwater
daguaiwan

 

null
null

 

null
null

 

结果分析:

tiane.jsp是通过forward跳转到fengshan.jsp的,这两个页面享用的是同一个request,故fengshan.jsp可以接收到tiane.jsp通过 request设置的属性。

donglan.jsp是通过href发送了另外的request请求,bama.jsp是通过sendRedirect跳转,用的也是另外的request请求,故fengshan.jsp不可以接收到这两个页面通过 request设置的属性。

 

JspServlet之间的跳转:

Jsp跳转Servlet可以使用<jsp:forward page=”URL” />或者response.sendRedirect(URL)都可以,它们之间的区别上面已经说明了。

 

Servlet跳转Jsp

²        getRequestDispatcherforward(request, response)方法,这里也只是发送了一次请求,可以在下一个页面接受request设置的属性。
²        response.sendRedirect(URL),这里发送了两次请求,不可以在下一个页面接受request设置的属性。
例子如下:
servlettiane.jsp    
<%request.setAttribute("river","redwater");
    request.setAttribute("country","daguaiwan");
%>
<jsp:forward page="/tiane" />
 
servletbama.jsp    
<%request.setAttribute("river","redwater");
    request.setAttribute("country","daguaiwan");
    response.sendRedirect("/ForwardRedirect/tiane");
%>
 
Tiane.java
publicclass Tiane extends HttpServlet {

  publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
//    response.sendRedirect("/ForwardRedirect/fengshan.jsp");
    this.getServletConfig().getServletContext()
            .getRequestDispatcher("/fengshan.jsp").forward(request, response);
  }

  publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    doGet(request, response);
  }    
}
 
再在web.xml中配置servlet:
  <servlet>
  <servlet-name>tiane</servlet-name>
  <servlet-class>com.dvnchina.test.Tiane</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>tiane</servlet-name>
  <url-pattern>/tiane</url-pattern>
</servlet-mapping>
具体的结果我就不分析了,和第一个例子差不多的。代码见附件。
 
 
 



999 2009-06-09 13:41 发表评论
分享到:
评论

相关推荐

    jsp和servlet中实现页面跳转的方式实例总结.docx

    JSP 和 Servlet 中实现页面跳转的方式实例总结 在 web 开发中,页面跳转是一个非常常见的需求,JSP 和 Servlet 是 Java Web 开发中两个最基本的组件,了解它们如何实现页面跳转是非常必要的。本文将根据 JSP 和 ...

    servlet跳转的几种情况

    Servlet 跳转可以分为 Redirect 跳转和 Forward 跳转两种,JSP 跳转也可以使用这两种方式,但是需要注意 JSP 的特殊性。了解 Servlet 跳转的几种情况,可以帮助开发者更好地控制程序的流程和数据传递。

    servlet/jsp跳转

    在实际开发中,理解和掌握Servlet与JSP的跳转机制以及它们如何协同工作,对于构建高效、可维护的Java Web应用至关重要。同时,合理利用Eclipse或MyEclipse这样的IDE能提升开发效率,更好地实现需求。

    java-web学习demo--最简单的servlet jsp跳转传值

    通过这个简单的Java Web学习demo,开发者可以了解Servlet和JSP协同工作的方式,以及如何在它们之间传递数据。这有助于理解Web应用的基础架构,并为进一步深入学习和开发复杂的Java Web应用打下坚实基础。

    sendRedirect()和forward()

    sendRedirect()和forward()方法都是Servlet编程中常用的方法,它们可以将客户端的请求重定向或转发到其他的资源,如Servlet、JSP页面或HTML文件中。但是,这两个方法之间存在着本质上的区别。 首先,让我们来看一下...

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

    在JSP(Java Server Pages)中实现页面间的...总结来说,forward和sendRedirect是JSP中实现页面跳转的两种基本方法,它们在性能、使用场景和实现效果上各有优劣。开发者需要根据具体的应用场景和需求来选择合适的方法。

    JSP+Servlet面试题

    以下是 JSP 和 Servlet 相关的知识点总结: 一、JSP 和 Servlet 基础知识 * JSP 和 Servlet 都是服务器端执行的,通常返回给客户端的是一个 HTML 文本。 * JSP 在服务器上执行,并将执行结果输出到客户端浏览器。 ...

    总结JSP与servlet之间的传值

    &lt;form action="JspServlet" method="post"&gt; ``` Servlet可以使用以下代码获取表单数据: ```java String username = request.getParameter("username"); ``` 2. **URL参数**: 如果JSP中的链接或...

    jsp和servlet中实现页面跳转的方式实例总结

    本文实例总结了jsp和servlet中实现页面跳转的方式。分享给大家供大家参考,具体如下: 假设要求从test1.jsp 跳转到test2.jsp 一. jsp中跳转: 1. 使用RequestDispatcher.forward方法转发 &lt;&#37; ...

    jsp和servlet知识点总结

    【JSP和Servlet知识点详解】 一、JSP与Servlet的区别 1. **本质与生成**:JSP(Java Server Pages)本质上是Servlet的一种简化形式,它将HTML代码和Java代码结合在一起,经过Web容器(如Tomcat)的处理,被编译成...

    forward PK sendredirect

    1. **跳转方式**:`jsp:forward`是服务器端跳转,而`sendRedirect`是客户端跳转。 2. **URL变化**:`jsp:forward`不会改变URL,`sendRedirect`会改变URL。 3. **数据传递**:`jsp:forward`可以共享请求范围内的...

    jsp和servlet请求与响应

    ### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...

    JSP和Servlet的入门

    JSP页面跳转通常有两种方式:请求转发(Request Forward)和重定向(Redirect)。请求转发发生在服务器端,通过`RequestDispatcher`的`forward()`方法实现,页面间共享数据方便;重定向是客户端行为,使用`response....

    jsp中几个页面之间跳转

    在JavaServer Pages (JSP) 中,页面之间的跳转是Web开发中的常见操作。这涉及到对URL路径的理解,包括绝对路径和相对路径的概念。本文将深入探讨这两种路径的区别以及它们在JSP页面跳转中的应用。 一、绝对路径与...

    jsp+servlet电子商务系统

    3. **JSP动作标签**:如`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`、`&lt;jsp:useBean&gt;`等,用于控制页面间的跳转和对象的实例化。 4. **EL(Expression Language)**:用于访问JavaBean属性,简化页面表达式,如`${user.name}...

    forward-sendRedirect

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

    JSP与Servlet复习

    ### JSP与Servlet复习知识点详解 #### 一、JSP与Servlet基础知识 **1. JSP简介** - **定义**: Java Server Pages (JSP) 是一种基于Java技术的...希望以上知识点能够帮助大家深入理解和掌握JSP与Servlet的相关知识。

    jsp加servlet的问题

    以下将详细阐述JSP与Servlet之间的交互机制、页面转发与重定向的区别,以及在web.xml配置文件中对Servlet的映射设置。 ### JSP与Servlet的交互 JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,用于...

    jsp+servlet路径状态的测试

    本测试旨在理解并优化JSP页面之间的跳转机制,以及Servlet如何通过转发(forward)与重定向(redirect)两种方式控制页面流转,从而确保应用的一致性和健壮性。 ### 测试目标 测试的主要目的是验证JSP页面间的跳转效果...

Global site tag (gtag.js) - Google Analytics