Session持久化

package pm_cn.itcast.session;


import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class SessionServlet1 extends HttpServlet {


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

// 实现 在 session域 中 的数据 共享

// 就会 创建 一个 session对象
// ( 判断 有没有 为 当前的 来访者的 浏览器 创建过 session 对象, 如果 已经创建过, 则 不再创建了 ,否则 就 创建一个)
HttpSession session = request.getSession();

session.setAttribute("name", "二蛋");


// 如何 实现 在 浏览器 关闭 之后 , 再次 去访问的 时候 , 找到 原来的  session 对象 呢 ?

// 解决方案 是 : 将 写回去的  cookie 给其 设置 一个 有效期, 使 之 成为 一个 持久化的 cookie 就可以了 .那么 浏览器关闭之后 , 这个 cookie 就仍然存在
// 下去访问的时候, 同样的 也会 带过去 .

Cookie cookie = new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60*60*12);
cookie.setPath("/");
response.addCookie(cookie);
//第一次访问的响应头。
// Set-Cookie JSESSIONID=C5C52D7263C22A3E2864EFB270B93BCE; Path=/day12/; 
//          HttpOnly JSESSIONID=C5C52D7263C22A3E2864EFB270B93BCE; Expires=Wed, 04-Jun-2014 18:49:37 GMT; Path=/
 
//第二次访问的请求头,会带着JSESSIONID两个
//Cookie JSESSIONID=C5C52D7263C22A3E2864EFB270B93BCE; username=1; password=1; JSESSIONID=C5C52D7263C22A3E2864EFB270B93BCE
// 当浏览器 禁用了 所有的 cookie 之后 如何 实现 session 的 追踪 . 

// 需要 通过 重写 url 路径来  实现 session的 追踪 , 就会拼接 jsessionid
String url = response.encodeURL("/day12/session2");

// 拼接 字符串 
response.getWriter().print("<a href='"+url+"'>session2</a>");

// 通过 重写 url 路径来实现 禁用  cookie  后的 session  追踪 
}


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


doGet(request, response);
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值