会话技术——Cookie和Session

 1、概念

2、Cookie

   1)创建和发送

CookieServlet.java

package net.pp.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "CookieServlet", urlPatterns = "/cookie")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建和发送cookie
        Cookie cookie = new Cookie("goods", "cup");//不能使用中文
        cookie.setMaxAge(60*10);//设置cookie持久化时间
        //cookie.setMaxAge(0);//设置cookie持久化时间0,删除cookie
        cookie.setPath("/hello/getCookie");//设置路径
        response.addCookie(cookie);//发送cookie给客户端

    }
}

结果是: 

  2)常见API

注意:

当关闭浏览器后,完成一个会话。再重新打开浏览器,内存中的Cookie消失。解决办法是,设置一个方法cookie.setMaxAge();cookie会留在浏览器中。

   2、Session

    1) Session对象的获取和创建

    2)使用Session域对象存取数据

    3)Session的生命周期

    4)Session持久化

SessionServlet.java

package net.pp.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "SessionServlet", urlPatterns = "/session")
public class SessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //第一次访问时没有session,服务器会自动创建一个session对象
        //之后再次访问的时候已经存在了session对象,直接获取这个对象
        HttpSession session = request.getSession();
        String sessionId = session.getId();
        response.getWriter().write("JSESSIONID=" + sessionId);
    }
}

SaveSession.java

package net.pp.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet(name = "SaveSessionServlet", urlPatterns = "/saveSession")
public class SaveSessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        //创建一个cookie覆盖之前的服务器自动生成是JSESSION
        Cookie cookie = new Cookie("JSESSIONID", session.getId());
        //设置持久化时间
        cookie.setMaxAge(60*60);
        response.addCookie(cookie);
        session.setAttribute("goods", "love");

    }
}

GetSessionServlet.java

package net.pp.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "GetSessionServlet", urlPatterns = "/getSession")
public class GetSessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取session
        HttpSession session = request.getSession();
        String goods = (String) session.getAttribute("goods");
        response.getWriter().write(goods+"");
    }
}

结果是:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章