會話技術——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+"");
    }
}

結果是:

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