JSP中对页面跳转的不同方法引出HTTP无状态的应对方法

首先我们来看今天所学应用到的一个例子,当我们做了一个登陆页面,提交表单后往往需要跳转到另外一个页面。这里可以用两个方法,方法如下:

1.response用法: response.sendRedirect("URL");  (是对服务器请求的响应)

2.request的用法: request.getRequestDispatcher("URL").forward(request, response);   (是装载着客户端请求的信息集合)

但是两种用法是有所不同的。response跳转后:1.最终页面地址显示的是传过去的URL。2.这种方法是不能将发出跳转请求的页面原有的参数往后传递。3.可以跳转到与原有页面不在同一服务器上的外部站点。但是request跳转之后:1.页面显示的地址是发送请求的页面。2.可以将发送请求页面中的参数往后传递。3.这种方法只能跳转到处于同一服务器上的其他页面,不跳到外部站点。

造成上面结果原因如下:我们称前者为对服务器发出的请求所作出的一种响应动作,这种相应动作并没有把请求页面中的信息保存下来,这种做法叫做地址重定向;而后者则是看成就是页面发出的请求的一个实质载体,这个载体装载了请求页面中的表单信息集合,这个信息集合中的信息是可以被跳转后的页面所引用的,这种方法叫做转发。值得注意的是,HTTP协议是一种无状态的协议,所谓无状态是客户端与服务器端之间是没有维持一个一直存在的通路链接。往往是客户端发出请求后,服务器端进行处理完成并返回一个页面,任务完成就会断开链接通路。否则通路占用会造成网络拥堵,服务器崩溃。所以,重定向实际上是对服务器端发出了两次请求,第二次请求和第一次是独立的,所以无法取到第一次的信息。而后者是一次请求能够取到发出请求中的表单信息。

另外与request相类似的还有另外两个对象: session和application。三者的用法很相似,但是互不相同。

1.request,这种请求是一次性的,发出一次请求后,在服务器端可以取到这次请求的信息。但是当下一个request发过来时,想再对上次请求中的东西进行操作是取不到的。

2.session叫会话,顾名思义这是一个持续性的过程,是客户端与服务器之间多次请求与响应的过程。

第一次请求服务器时,由服务器创建,并创建了编号,将编号以cookie回传给客户端,相当于在服务器开辟了一个独立空间存放与这个浏览器之间的会话内容。

session销毁的时机:

a. 关闭浏览器一段时间后.

b. session.invalidate();

session.removeAttribute("");

c. 关闭服务器.

3.application 申请,他与session一样都是在服务器开辟了一个空间,用法大致相同。但是开辟的这个空间是公用的,可以看做是java中开辟的静态常量区,这里所存的请求信息,不止能提供不同的请求使用,还能提供给不同的浏览器之间发出的请求所使用。(session是只有同一个浏览器发出的才能够使用彼此请求留下的信息)

最后,为了应对http无状态的方法其实还有一种,不同于上边谈及的在服务器端动手,这个方法是在客户端方面动手。这个方法就是创建cookies,cookies相当于人的一个身份证,是当浏览器访问服务器时,服务器自动给分配的一个信息集,返回到客户端中存放好。当客户端下次再访问这个服务器时,将会把cookies的信息带上一起发过去服务器,服务器会根据cookies的信息进行匹配,判别这个来访者是谁。就好比我得到了服务器发来的身份证后,我拿着身份证再来访问你,你就可以根据我的身份证知道我是谁。从而保持了客户端和服务器的会话持久性。

时间: 2024-10-17 14:24:59

JSP中对页面跳转的不同方法引出HTTP无状态的应对方法的相关文章

web项目中实现页面跳转的两种方式

<a href="javascript:"></a>跳转在网页本身,URL不改变 <a href="#"></a> 跳转在网页本身,URL 改变 java web项目中实现页面跳转的主要方式有两种:第一种,<% response.sendRedirect("index.jsp");%>第二种<jsp:forward page="index.jsp"/>我做

ngRoute+ngAnimate与JQM中的页面跳转的区别

1.ngRoute+ngAnimate与jQM中的页面跳转有何异同? 相同点: (1)完整的HTML只需要一个 (2)使用异步AJAX请求获取下一个页面 (3)可以实现转场动画 不同点: (1)ngRoute需要配置路由字典:jQM没有,更加灵活 (2)ngRoute访问路由地址的格式——特殊格式的hash http://xxx/index.html#/main jQM访问页面地址——普通的URL http://xxx/tpl/main.html (3)ngRoute访问的路由页面可以使用F5刷

servlet中实现页面跳转return “r:”和return “f:

servlet中实现页面跳转return “r:”和return “f:”的区别和作用 2015-07-28 14:22741830480 | 浏览 48 次 Pascal 2015-07-28 14:26 #知道行家专业创造价值,火热招募中!# 提问者采纳 热心网友 r是redirect重定向,参数会丢失,url全是跳转后的url.f是forward服务器内部完成转发(参数仍在request里面),url不会变的.

网站开发中web页面跳转几种方式详解

在做web开发中,页面跳转的方式有很多种,然而有些时候这些跳转如何用到恰到好处却很容易被忽视. 客户端触发跳转有如下几种 使用meta元信息 <!--如下表示5秒后跳转到url指定的链接,推荐使用这种方式--> <meta http-equiv="refresh" content="5;url=http://my.oschina.net/ososchina/blog"> 2.使用javascript中的window.location对象 &l

php中实现页面跳转的几种方式

亲测,not复制粘贴 PHP中实现页面跳转有一下几种方式,看了几个人写的不是很条理,自己整理一下 在PHP脚本代码中实现 <?php header("location:url地址") ?> 例如 <?php header("location:helloworld.php")?> 页面会立即跳转,因为header执行了location重定向 延迟跳转(比如登陆成功后会有几秒钟等待时间,然后跳转到了其他页面) <?php header(&q

js中实现页面跳转

1.在本页中跳转到指定页面 1.window.location.href方式    <script language="javascript" type="text/javascript">           window.location.href="target.aspx";     </script> 2.window.navigate方式跳转   <script language="javascr

jsp中几种跳转方式和参数共享

整理了一下jsp入门中的跳转和数据共享问题,写成这篇博文希望对大家有帮助,参考文章列在后面: 常用的跳转方式有以下几种: (1)href超链接标记,属于客户端跳转 (2)使用javascript完成,属于客户端跳转 (3)提交表单完成跳转,属于客户端跳转 (4)使用response对象,属于客户端跳转 (5)使用requestDispatcher类,属于服务器跳转 下面一一来看 (1)href超链接标记 这个比较简单,通常写到a标签里即可,来完成指定位置的动态跳转比较方便 代码:<a href=

php开发中的页面跳转方法总结

PHP页面跳转实现的功能就是将网站中一个网页跳转到另一个网页中.对于刚刚学习PHP语言的朋友来说,是必须要掌握的基础方法. 页面跳转可能是由于用户单击链接.按钮等触发的,也可能是系统自动产生的.页面自动跳转在WEB开发中经常用到,而且根据需求可以采用不同的跳转方式,比如提示操作信息后延时跳转等, 本文总结了WEB开发中常见的几种页面跳转方法. PHP header()函数跳转 PHP的header()函数非常强大,其中在页面url跳转方面也调用简单,使用header()直接跳转到指定url页面,

WEB开发中的页面跳转方法总结

PHP header()函数跳转 PHP的header()函数非常强大,其中在页面url跳转方面也调用简单,使用header()直接跳转到指定url页面,这时页面跳转是302重定向: $url = "http://www.helloweba.com/";   header( "Location: $url" );  我们有可能会遇到特殊的跳转时,比如网站改版有个页面地址要做301重定向,当然你可以通过web配置rewrite来实现,但现在我要告诉大家,可以使用php