JSP跳转中request共享问题

转载 2015年07月08日 13:18:41

 上篇博客中介绍了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是以浏览器级别的环境,上面所有情况都可以共享,当然在相同系统环境, 且不关闭浏览器为前提下。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java Web 中application(应用级) session(会话级) request(请求级)如何实现数据共享

在JavaWeb 中实现数据共享往往通过定义属性的方法来实现,而什么是属性呢?它类似于Hashmap中的键值对,有属性名和属性值作为设置属性方法的参数,而在其他的地方通过属性名去获取属性的值。   ...
  • JITHL
  • JITHL
  • 2016年08月21日 17:52
  • 1835

Servlet共享变量Context,Session,或Request的作用范围

在Servlet中进行变量的共享可硬通过Servlet容器中存在的ServletContext,HttpSession和HttpServletRequest的实例来实现。 在三中方式共享变量的方法是使...
  • stven_king
  • stven_king
  • 2014年04月02日 18:47
  • 2317

jsp 的四个作用域 :page、request、session和application的区别 .

1、区别: 1.page指当前页面有效。在一个jsp页面里有效 2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServ...
  • frankaqi
  • frankaqi
  • 2015年10月31日 18:14
  • 1627

【jsp+servlet】JSP中的page、request、session、application四大作用域

什么是作用域? 我们在写代码的时候,都会遇到变量的作用域的问题;比如这是一个局部变量,出了它的作用域就无法访问了。对于作用域的概念,最简单的理解就是: 在你的地盘,你还算根葱;出了你的地盘,你啥...
  • lzm18064126848
  • lzm18064126848
  • 2016年01月11日 22:12
  • 1659

jsp中request经常是的获取参数的方法总结

下面将获取参数的方法都列出来说一说:request.getParameter(String name) //获取指定name的值,若name有多个则获取第一个value值 request.getPar...
  • xinghuo0007
  • xinghuo0007
  • 2017年04月28日 19:14
  • 1835

httprequest跳转和httpresponse跳转的区别

request和response做请求跳转
  • xiaoxiaoxuanao
  • xiaoxiaoxuanao
  • 2016年11月27日 16:26
  • 1629

request和respose的跳转区别

1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不是一个requ...
  • y_index
  • y_index
  • 2016年10月24日 14:18
  • 158

jsp 中 request跳转和response 跳转

* 先说在jsp中跳转的时候能看到的不同           * 1. 使用 request.getRequestDispatcher("url").forward(request,response)...
  • ya985860612
  • ya985860612
  • 2013年12月05日 19:22
  • 2684

request跳转和response跳转的区别

首先展示userlogin.action 访问的servlet中的代码 内容主要是打印传入的姓名和密码 String name = request.getParameter("name")...
  • yklin_csdn
  • yklin_csdn
  • 2016年12月16日 22:12
  • 279

response的页面重定向与request的页面跳转的区别

response的页面重定向与request的页面跳转的区别 response: response是服务器对客户端的反馈,其对页面重定向的流程是:当客户端向服务器发起请求时,服务器重新给客户端一个U...
  • L_BestCoder
  • L_BestCoder
  • 2016年12月10日 18:20
  • 7357
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP跳转中request共享问题
举报原因:
原因补充:

(最多只允许输入30个字)