浏览器与web server之间通常是无状态的,为了某种需求,如做购物车,需要一种有状态的连接机智.WEB就引入了SESSION的概念.实现的方式就是SESSION TRACKONG.一般实现方法有:
1 建立含有数据的隐藏表格字段
2 重写URL
3 使用COOKIE
4 就是本文要讨论的Servlet SESSION API问题
为了识别每个CLIENT的身份,WEB SERVER会给每个client分配一个SESSION ID,并随网页一起传給CLIENT.以上四种方式处理的不同在于CLIENT下次再请求页面时,这个SESSION ID如何传给服务器,以便让服务器知道是谁.
第一种方式的缺点是通过查看网页原代码就知道SESSION ID,安全隐患大,如
<form name="form" mothod=post aciton="aa.jsp">
<input type="hidden" name="name" value="aiqiuming"/>
<input type="submit" value="transmit"/>
</form>
第二种方式是把SESSION ID写在URL上,以GET方式传输到服务器,如
http://www.abc.com?sessionid=123456
同样不安全,而且URL的长度有限制
第三种:使用COOKIE,受浏览器设置限制(默认是在一定的安全范围内是可以使用的),而且不同的人用同一台电脑,可以互相看到对方的信息,如购物车的信息
第四种:当CLIENT不接受COOKIE的时候,就改用重写URL方式了,解决了当不能使用COOKIE的问题.此时必须用encodeURL()或encodeRedirectURL()方法.如:
<a href=www.ezget.com.cn>优得网</a> 改为:
<a href='<%=response.encodeURL("www.ezget.com.cn)"%>优得网</a>
又如:
response.sendRedirect(www.ezget.com.cn) 改为:
response.sendRedirct(response.encodeRedirectURL(www.ezget.com.cn))
1 建立含有数据的隐藏表格字段
2 重写URL
3 使用COOKIE
4 就是本文要讨论的Servlet SESSION API问题
为了识别每个CLIENT的身份,WEB SERVER会给每个client分配一个SESSION ID,并随网页一起传給CLIENT.以上四种方式处理的不同在于CLIENT下次再请求页面时,这个SESSION ID如何传给服务器,以便让服务器知道是谁.
第一种方式的缺点是通过查看网页原代码就知道SESSION ID,安全隐患大,如
<form name="form" mothod=post aciton="aa.jsp">
<input type="hidden" name="name" value="aiqiuming"/>
<input type="submit" value="transmit"/>
</form>
第二种方式是把SESSION ID写在URL上,以GET方式传输到服务器,如
http://www.abc.com?sessionid=123456
同样不安全,而且URL的长度有限制
第三种:使用COOKIE,受浏览器设置限制(默认是在一定的安全范围内是可以使用的),而且不同的人用同一台电脑,可以互相看到对方的信息,如购物车的信息
第四种:当CLIENT不接受COOKIE的时候,就改用重写URL方式了,解决了当不能使用COOKIE的问题.此时必须用encodeURL()或encodeRedirectURL()方法.如:
<a href=www.ezget.com.cn>优得网</a> 改为:
<a href='<%=response.encodeURL("www.ezget.com.cn)"%>优得网</a>
又如:
response.sendRedirect(www.ezget.com.cn) 改为:
response.sendRedirct(response.encodeRedirectURL(www.ezget.com.cn))