Day1—— 浅谈 Java 会话控制 Cookie 和 Session

什么是会话控制??
会话就是聊天,服务器和客户端之间的请求和相应过程,使用会话控制技术,保存一些必要的数据,从而满足一些特定的功能,
一台电脑在登陆百度网站之后,不管是IP地址变更,还是关闭电脑重启之后,再一次打开百度网站,都是登陆状态,但是如果长时间没有打开百度,这里需要重新验证登陆信息。在有效时间范围以内的自动登陆就是利用会话控制技术来完成的。
Cookie 和 Session。我们先说说Cookie,Cookie是浏览器行为,浏览器保存服务器给予客户端数据的一种方式。
1.Cookie数据都是键值对形势,并且保存的数据都是字符串。
2.Cookie数据不能保存中文。
3.Cookie数据有大小限制,一般在4kb~8kb。
4.Cookie数据会根据浏览器内核的不同,支持的Cookie数量是不同的。
5.Cookie数据会访问不同的网络资源,自行选择对应的Cookie发送个服务器。
Cookie技术用的方法

构造方法:Cookie();在服务器端创建一个Cookie

成员方法:
	setName(String name);
	setValue(String value);
	setMaxAge(int sec);
	setPath(String url);

服务器需要发送Cookie数据给予浏览器保存
通过HttpServletResponse对象调用addCookie(Cookie cookie)
【注意】
Cookie数据中不支持空格
会出现500错误
Invalid Character [32] ==> space
Cookie的有效时间设置
整数表示当前Cookie在浏览器本地保存数据的时间,已秒为单位
cookie.setMaxAge(20);

当前浏览器打开状态下有效,如果浏览器关闭,cookie信息立即销毁
cookie.setMaxAge(-1);

销毁对应name的Cookie信息
cookie.setMaxAge(0);

Cookie的路径约束
当前Cookie有效范围是整个Tomcat服务器
cookie.setPath("/");

默认是当前Servlet对应URL路径Cookie有效
【缺省】cookie.setPath(“路径”);

可以设置指定路径,指定资源下使用对应的Cookie信息,超出范围无法使用
cookie.setPath(“路径”);

获取Cookie数据
通过HttpServletRequest对象获取Cookie数据
Cookie[] cookies = request.getCookies();
getName();
getValue();
利用Cookie保存用户上一次登陆时间
资源:
@WebServlet("/aaa")

如何确定用户是第一次访问?
因为用户第一次登陆,没有保存上一次登陆是的Cookie信息,假定Cookie name 为lastTime,如果没有对应的lastTime,等于说用户是第一次登陆

用户第一次的登陆
创建Cookie,存入本次登陆的时间,返回给浏览器

用户非第一次登陆
读取Cookie信息,发送Cookie中保存的上一次登陆时间,给用户展示,并且保留本次登陆时间

@WebServlet("/aaa")
public class LastTimeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 获取Cookie数据
Cookie[] cookies = req.getCookies();
Cookie last = null;
String msg = null;

    // 2. 验证Cookie数组中是否存在一个Cookie name属性为lastTime的Cookie信息
    boolean flag = true;

    // 利用循环遍历Cookie数组
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            if ("lastTime".equals(cookie.getName())) {
                flag = false;
                last = cookie;
                break;
            }
        }
    }

    if (flag) {
        // 第一次登陆
        msg = "

你好

"; } else { // 非第一次登陆 msg = "

您上一次登陆时间 " + last.getValue() + "

"; } Cookie lastTime = new Cookie("aaa", new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss").format(new Date())); resp.addCookie(aaa); resp.setContentType("text/html;charset=utf-8"); resp.getWriter().append(msg); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }

}

你可能感兴趣的:(Day1—— 浅谈 Java 会话控制 Cookie 和 Session)