JavaWeb编程中页面跳转与数据共享
- 格式:doc
- 大小:33.00 KB
- 文档页数:4
浅谈JavaWeb编程中页面跳转与数据共享引言:javaweb中有多种方式实现jsp/servlet页面之间的跳转与数据共享,每种方式有各自的特点,在实际编程过程中需要根据具体的场景选择最合适的方式进行跳转或者数据共享。
一、引言
在javaweb编程中间经常出现需要从一个jsp/servlet页面跳转到另外一个jsp/servlet页面并且在这多个不同页面之间共享数据信息的情况,如何选择跳转方式以及共享数据方式一直是javaweb编程初学者容易迷茫的地方。
二、跳转的方式
javaweb的跳转分两种方式:重定向和转发。
重定向是被请求的jsp/servlet页面向客户端ie响应一个重定向状态码以及,转自[星论文网]重定向路径后,客户端ie根据响应内容自动的向重定向路径发送一个新的请求,重定向路径的资源接收到请求后执行完毕将结果响应给客户端ie。
转发是被请求的
jsp/servlet页面代码通过requestdispatcher对象将当前请求直接在服务器上转交给新的目标路径,由目标路径资源执行完毕将结果响应给客户端ie。
例如客户端ie请求资源a,资源a跳转到资源b,最终客户端看到资源b的内容。
如果是在转发模式下,客户端ie向资源a发出的请求,直到资源b响应才结束,整个过程只有一次请求响应。
如果是在重定向模式下,客户端ie向资源a发送一个请求信息,当资源a响应客户端重定向状态码时第一次请求就结束了,然后客户端ie向资源b发出第二次请求,资源b进行第二次响应,整个过程有两次请求响应。
默认情况下重定向的第二次请求不含有任何第一次请求用户输入的参数。
三、数据共享的方式
通过重定向或者转发能够在不同的jsp/servlet页面之间跳转,在这些跳转页面之间经常需要使用一些共享数据,javaweb提供了四种常用的方式来实现数据共享,分别是使用cookie对象、httpsession对象、servletcontext对象和httpservletrequest
对象。
这四种方式虽然都能实现页面之间数据共享,但是各自又有不同的特点:
(一)使用cookie对象时,会生成cookie数据保存在客户端电脑,客户端ie每次请求服务器资源时会将cookie内容跟随请求对象一起发送到服务器,因此服务器上的jsp/servlet页面都能够通过请求对象进行cookie内容的访问,从而实现数据共享。
(二)httpsession对象存在于服务器内存,每个客户端的session是独立的。
在客户端通过cookie保存一个唯一的sessionid,每次请求时ie将这个sessionid跟随请求一起交给服务器,服务器根据sessionid找到这个客户端私有的httpsession 对象,同一个客户端在不同的jsp/servlet页面都可以对自己的
httpsession对象进行访问,通过调用httpsession的setattribute()和getattribute()方法实现数据共享。
(三)servletcontext对象存在于服务器内存,任何
jsp/servlet页面都能够对servletcontext对象进行访问,并且所有客户端访问的servletcontext对象是相同的,通过对servletcontext对象进行访问,通过调用servletcontext的setattribute()和getattribute()方法实现数据共享可以实现数据共享。
(四)httpservletrequest对象在一次请求期间可以被传递给多个jsp/servlet页面,这些页面可以通过调用httpservletrequest的setattribute()和getattribute()方法实现数据共享。
四、如何选择合适的方式
数据共享的方式有很多种,选择哪种方式进行数据共享就是一个需要斟酌的问题,下面是笔者总结的一些经验:
(一)如果希望这个数据在关闭客户端ie甚至是电脑后再次访问服务器时还能使用,通过cookie对象进行数据共享。
典型的应用场景如保存用户的登录信息进行自动登录验证、保存用户的偏好设置等。
(二)如果希望这个数据多次请求之间所有用户访问的结果相同,通过servlet context对象进行数据共享。
典型的应用场景如
在线用户列表的显示、聊天室的聊天信息传递等。
(三)如果这个数据希望在多次请求之间共享,并且每个用户的数据私有,通过httpsession对象进行数据共享。
典型的应用场景如保存用户验证信息在不同的页面显示。
(四)如果这个数据只有一次请求响应过程有效,通过httpservletrequest对象进行数据共享。
典型的应用场景如关键字查询、信息列表显示、用户信息查看等,基本上只要和查有关的都是通过httpservletrequest对象。
另外对于跳转的两种方式如何选择,基本上只要有通过httpservletrequest对象进行数据共享的页面之间都需要使用转发方式,因为重定向方式会产生一个新的请求将原有信息丢失。
五、结束语
本文对javaweb中页面之间的跳转和数据共享方式进行了对比阐述,希望能够解决初学者在学习这部分内容时心中的疑惑。
在实际开发中还需要读者根据实际情况进行分析,举一反三来选择最合适的方式。
参考文献
[1]marty hall.servlet与jsp权威指南[m].北京:机械工业出版社,2002.
[2]hans bergsten.javaserver pages,third edition[m].北京:中国电力出版社,2004.。