(1)客户端会话跟踪技术:==Cookie==
基本使用
发送cookie
/*
发送cookie给浏览器
*/
@WebServlet(value = "/l01")
public class ServletCookieDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取
Cookie cookie = new Cookie("username","张三");
//发送
response.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response)
}
}
获取cookie
Cookie[] cookies = request.getCookies();
会把所有的cookie都获取出来 我们只想拿到我们想要的
做一个if判断
/*
获取cookie
*/
@WebServlet(value = "/l02")
public class ServletCookieDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
//会把所有的都遍历出来 我只想要我发送的username
String name = cookie.getName();
if ("username".equals(name)) {
String value = cookie.getValue();
System.out.println(value + ":" + name);
break;
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
在浏览器中先发送 然后再开一个网页 获取
cookie的原理
每一个分号就代表一个cookie
正常情况下当浏览器关闭时 当前的cookie就会消失 这不符合一些需求 比如登录网站时的 记住我 按钮 这是就需要一个存活时间的api
tomcat7以前不支持cookie存储中文 以后的版本支持存储中文
(2)服务端会话跟踪技术:==Session==
基本使用 很简单
分两步 第一步设置session
@WebServlet(value = "/s1")
public class ServletSessionDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置session
HttpSession session = request.getSession();
session.setAttribute("username","张三疯");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
第二步 在另一个请求中获取session
@WebServlet(value = "/s2")
public class ServletSessionDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
Object username = session.getAttribute("username");
System.out.println("username = " + username);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
浏览器测试