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

JSP跳转中request共享问题

 
阅读更多

上篇博客中介绍了jsp的几种常用跳转方式.在jsp的跳转过程中,经常会传递一些参数值,这些值通常我们放到request中.但是哪些jsp的跳转方式是可以共享request,哪些又是不共享,即跳转后拿不到值的呢?

          一、首先来看可以共享request的情况:

          (1)<jsp:include page="...">

 页面间有包含关系的,包含进来的页面中的request中的属性和原页面共享属性数据以及请求参数,

          (2)属于服务器端进行跳转的方式

                (i)<jsp:forward page="...">用于从一个页面跳转到另一个页面,要跳转的页面也可进行共享原页面中request中设置的属性以及请求参数。这种jsp界面使用forward的方式与Servlet中forward()是相同的道理 

                (ii)forward()方法

                使用到javax.servlet.RequestDispatcher类

                RequestDispatcher rd =getServletContext().getRequestDispatcher("url");

                rd.forward(requestVar,requestVar); //传递servlet的入口参数

                forward函数已经把原页面的request,response对象传入新的页面,因此这新旧页面拥有相同的request,response对象。

                request.getparameter("var")就可以得到相应的值.

                forward()是直接在server做的,浏览器并不知道,也不和浏览器打交道,这也是浏览器的地址不变化的原因。

          

          二、不能共享request的jsp跳转方式

          (1)JavaScript跳转

 属于脚本语言的直接定位,不经过服务器传参,所以不能共享request数据

          (2)、HTML语言的自动跳转

            <html>

                  <head>

                     <meta http-equiv="refresh"content="0;url="http://www.baidu.com">

                    0是等待时间,如果设置为5表示等待5s后开始跳转

                  </head>

               …………

         (3) response跳转

            Response跳转方式其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化。新页面不能处理旧页面的pagecontext(request,response,...)对象.

         (4)还有的情况是HTML的特征,用src作为页面链入时也是不能进行request属性数据以及参数共享,

              (i)如<a></a>标签中的href=”…”,

              (ii)还有例如常用的frameset

                    <frameset   id="set" title="set">

                              <frame  src="left.jsp"  name="leftFrame"  scrolling="auto"/>

                              <frame  src="right.jsp"  name="main"   scrolling="auto"/>

                    </frameset>

               其中当前主页面和left.jsp和right.jsp不共享request对象.

              (iii)然后就是直接定位的window.open(),window.location()等函数都不能进行request对象属性数据共享,以及请求参数共享的情况中,request对象在跳转到新页面时被清空了.并没有经过服务器的传递.

 

         虽然通过客户端进行跳转的方式很简单方便,但在共用request内容对象时就不方便了,但是这时候可以考虑使用session来存储对象数据.session是以浏览器级别的环境,上面所有情况都可以共享,当然在相同系统环境, 且不关闭浏览器为前提下。

分享到:
评论

相关推荐

    Jsp的request的用法

    在JavaServer Pages (JSP)中,`HttpServletRequest`对象的`request`是一个核心的组件,它用于处理HTTP请求。在本篇文章中,我们将深入探讨`request.getParameter()`和`request.setAttribute()`以及`request....

    jsp页面的五种跳转方式

    本文将详细介绍 JSP 中五种常用的页面跳转方式及其应用场景。 #### 1. RequestDispatcher.forward() **概念**:`RequestDispatcher.forward()` 是一种服务器端内部转发机制,用于将当前请求转发到同一个 Web 应用...

    jsp实现页面跳转的方法

    如果在相同的业务逻辑下,我们使用`jsp:forward`代替`jsp:include`,那么在`calling1.jsp`中,一旦租金满足条件,就会通过`jsp:forward`动作直接跳转到`destination1.jsp`。此时,`calling1.jsp`的后续代码将不会被...

    JSP页面跳转的五种方法

    ### JSP页面跳转的五种方法 在Java Web开发中,页面间的跳转是非常常见的需求之一。合理的页面跳转不仅可以提升用户体验,还能优化应用程序的结构。本文将详细介绍JSP页面跳转的五种方法:`RequestDispatcher....

    JSP页面的跳转方式汇总

    在Java Server Pages (JSP) 技术中,页面之间的跳转是非常常见的操作,对于实现用户交互和数据处理至关重要。本文将详细介绍七种常用的JSP页面跳转方法,并对其进行深入分析。 #### 1. 使用超级链接跳转 通过在HTML...

    request和response实现跳转和重定向的区别

    它通过`Request`对象的`forward()`方法实现,服务器接收到请求后,不直接处理,而是将请求传递给另一个内部资源(如JSP、Servlet或其他Web组件)。在这个过程中,客户端并不知道请求被转发,它只看到最初的请求URL,...

    JSP页面跳转方法汇总

    而`&lt;jsp:forward&gt;`则是在同一应用服务器内部高效传递请求和响应的理想选择,特别是在需要共享`request`和`session`作用域中的数据时。理解这些方法的区别和限制对于开发高性能和可维护的Web应用程序至关重要。

    JSP_页面跳转,JSP_页面跳转

    在探讨JSP页面跳转这一主题时,我们深入解析其概念、实现方式以及在实际开发中的应用,以此来全面理解JSP技术中的页面跳转机制。 ### JSP页面跳转的概念 页面跳转,通常指的是从一个网页转移到另一个网页的过程。...

    jsp跳转详情

    ### JSP中的五种页面跳转方法详解 在Java Web开发中,页面之间的跳转是一项基本且重要的功能。本文将详细介绍JSP(Java Server Pages)中实现页面跳转的五种常见方法:`RequestDispatcher.forward()`、`response....

    JSP页面跳转大全.docx

    在JavaServer Pages (JSP) 中,页面跳转是一个常见的操作,用于实现用户请求的重定向或页面间的逻辑流程控制。以下是对不同跳转方法的详细说明: 1. **forward() 方法** `forward()` 方法属于 `javax.servlet....

    关于JSP页面间的传参问题

    ### 关于JSP页面间的传参问题 #### JSP页面间传值方法概述 在进行Web开发时,尤其是在使用Java Server Pages(JSP)技术的过程中,页面间的参数传递是一项非常重要的技能。它不仅涉及到基本的HTML知识,还涉及到...

    jsp页面跳转

    - **应用场景**:适合于在一次请求处理过程中,多个资源(如Servlet、JSP页面)之间共享数据的情况。 ##### 2. `sendRedirect()` 方法 `sendRedirect()` 是通过`HttpServletResponse`接口提供的,用于重定向到一个...

    面试中常见的有关JAVA和JSP的问题

    3. **JSP跳转方式** - **&lt;jsp:include&gt;**:不进行页面重定向,而是将目标页面的内容嵌入到当前页面中,可以传递参数,类似函数调用。 - **&lt;jsp:forward&gt;**:执行页面重定向,用户浏览器地址栏显示新页面URL,无法...

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

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

    jsp+servelet+javabean

    在JSP中,JavaBean可以被声明和使用,以便在多个页面间共享状态,或者通过JSP表达式语言(EL)和JSTL标签来调用其方法,简化页面逻辑。 【源码】提到"源码",意味着这个压缩包可能包含了这三个技术的示例代码或项目...

    jsp的四个作用域

    在使用jsp的四个作用域时,需要注意变量的生命周期和变量的共享问题。例如,applicationScope中的变量可以被所有用户共用,如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。 jsp的四...

    JSP面试容易问到的问题

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

    两种跳转的区别.txt

    - **保留请求数据**:由于是服务器端内部的跳转,因此跳转后的新页面可以直接访问前一个页面设置的所有`request`对象中的属性,这对于需要在多个页面间共享数据的场景非常有用。 - **参数传递**:可以通过`&lt;jsp:...

Global site tag (gtag.js) - Google Analytics