java web-如何实现IE禁用cookie后继续使用session

方法一:


首先要明白:session是在服务器端创建并保存在服务器端,当代码中创建session时会相应地创建sessionID保存在服务器端,同时服务器向浏览器响应信息时会以cookie形式 (其实就是“JSESSION:sessionID”的键值对)返回并保存到浏览器本地中。一旦当前浏览器的进程要取服务器对应的保存在session的信息时候,就会取出刚才保存在cookie中对应的sessionID和服务器端的sessionID进行对比,相同就能取出你想要的信息,不能就不能取出。


好了,明白这一点后,我们就可以即使浏览器禁止了cookie也能用session。因为在一般情况下(即没禁时候),我们不需把sessionID保存到cookie中,因为一般情况下浏览器会自动的;然而当禁止时候,就需要我们主动的把sessionID写入到cookie中。那么问题就解决了。



主动把sessionID写到cookie中

public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

	response.setContentType("text/html;charset=utf-8");
	PrintWriter out = response.getWriter();
	//先用一次Session,就会自动创建Session的id
	HttpSession session=request.getSession();
	session.setAttribute("mess","你关闭了浏览器我还是给你看到session");
	//自己把SessionID保存在cookie中
	Cookie cookie=new Cookie("JSESSIONID", session.getId());
	//设置cookie保存时间
	cookie.setMaxAge(60*20);
	//被创建的cookie返回浏览器
	response.addCookie(cookie);
	out.println("添加Session成功!");
}


直接取就可以了:

String mess=(String)request.getSession().getAttribute("mess");
out.println(mess);



方法二:


不用保存SessionID到cookie中,而是动态地把当前用户的SessionID添加到程序的各超链接或转发地址中,那么就可以确保用户的唯一。response.encodeRedirectURL(url)是一个进行URL重写的方法, 使用这个方法的作用是为了在原来的url后面追加上Jsessionid 。 目的是保证即使在客户端浏览器禁止了cookie的情况下,服务器端仍然能够对其进行事务跟踪。


例如这样:

功能:物品加入购物车后,点击返回主页面,主页面显示刚才加入到购物车的物品,当然了,这里是考虑浏览器禁止cookie情况下。

//动态改写URL
String url = response.encodeRedirectURL("/UserManager/BuyBookCL");
PrintWriter.println("<a href='"+url+"'>加入购物车</a>");
//在返回时也要加入 URL地址重写
String url = response.encodeRedirectURL("/UserManager/home");
PrintWriter.println("<a href='"+url+"'>返回主页面</a><br/>");





  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值