本文主要是介绍(2)会话跟踪技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介:
HTTP是无状态的通信协议,当客户端发出请求时,服务器才会建立连接,一旦请求结束,服务器便中断连接.
这样的机制,就使得服务器无法判断:目前正在连接的客户端与之前的某个连接是否为同一个客户.
在某些情况下,必须想办法将客户状态维持在服务器上,这种维持客户状态的技术,我们称之为会话跟踪技术.
四种实现方式
- URL传递参数
- 隐藏表单区域
- 会话对象(HttpSession)
- 使用Cookie
1.URL传递参数
URL(Uniform Resource Locator,统一资源定位符)是指Web上特定的页面地址.
可以在URL的结尾部分添加一些数据,这些附加的数据会随着HTTP协议的请求报文一起被发送到服务器.
URL传递参数的一般做法是:
原始的URL:
http://server:post/Servlet
添加附加数据的URL:
http://server:post/servlet?parameter=value
2.隐藏表单区域
所谓隐藏表单域是指,利用HTML中的表单隐藏元素Hidden.
Hidden元素并不会出现在客户端的浏览器中,但是它的值可以在提交表单时被发送到服务器.
注意:隐藏表单要放在form表单中一起提交.
<form name="formName" method="POST" action="…">……<input type="hidden" name="hiddenName" value="parameterValue">……
</form>
3.会话对象(HttpSession)
所谓的会话是指:在一段时间内,某客户端与服务器之间的一连串的请求与响应.
会话对象可以使用户访问一个站点的多个页面时共享信息.
javax.servlet.http.HttpSession接口用来提供会话对象,如果我们在程序中需要操作会话,就可以使用它.
可以通过HttpServletRequest的getSession方法获得(或创建)HttpSession对象。
String loginName="yves";
//获得会话对象,没有session就创建
HttpSession session = request.getSession();
//在会话对象中设置一个新的属性,并赋值,以后的请求中可以访问该数据
session.setAttribute("loginName", loginName);
//获得会话对象,false代表没有session就不创建
HttpSession session = request.getSession(false);
//从会话对象中获得在上一个页面中存储在其中的值
String loginName= (String)(session.getAttribute("loginName"));
//在会话对象中设置一个新的属性,并赋值 session.setAttribute("loginName", loginName);
方 法 原 型 | 说 明 |
---|---|
void setAttribute(String name, Object value) | 在会话中设置新的属性 |
Object getAttribute(String name) | 根据属性名称获得属性的值 |
Enumeration getAttributeNames() | 获得所有属性的名称 |
void removeAttribute(String name) | 删除指定名称的属性 |
void invalidate() | 丢弃会话,释放其中存储的任何数据 |
void setHeader(String name, String value) | 设置String类型的值到name指定的标头 |
void setIntHeader(String name, int value) | 设置int类型的值到name指定的标头 |
void addHeader(String name, String value) | 新增String类型的值到name指定的标头 |
void addIntHeader(String name, int value) | 新增int类型的值到name指定的标头 |
boolean containsHeader(String name) | 判断指定名称的标头是否存在,如果存在返回true,否则false |
void setStatus(int statuCode) | 设置响应报文中的状态码 |
4.使用Cookie
(1)服务器创建cookie 然后发送给客户端.
Cookie cookie = new Cookie(“key”,”value”);
response.addCookie(cookie);//可以添加多个cookie
(2)服务器获取来自用户的cookie数组,然后遍历.
Cookie[] cookies = request.getCookies();
总结:
会话跟踪技术实际上就是处理页面间数据应该如何传递的问题,包括URL传参、隐藏表单域、使用Session和使用Cookie这四种方式;
会话对象是进行会话跟踪最流行的一种方式,它主要解决了HTTP协议是无状态的问题。
这篇关于(2)会话跟踪技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!