1. 程式人生 > >java中的session和cookie

java中的session和cookie

cookie和session

  • Cookie,有時也用其複數形式Cookies,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。

  • Session具體到Web中的Session指的就是使用者在瀏覽某個網站時,從進入網站到關閉這個網站所經過的這段時間,也就是使用者瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,Session實際上是一個特定的時間概念。

在javaee中使用cookie的幾個方法

  • 因為保證執行緒的統一,即request和response的高度統一,便於操作,使用的方法都會進行傳入request,由於本人用的是tomcat7,tomcat7以上版本對中文cookie的限制,所以要進行編碼和解碼。把字用utf-8編完存cookie,然後在取的時候再用utf-8解碼。

  • 加入cookie

//加入cookie
    public void addCookie(HttpServletResponse resp,String key,String value) throws UnsupportedEncodingException {
//因為tomcat7以上對中文cookie的限制,所以要編碼
        if (value==null){
            return;
        }
        Cookie cookie = new Cookie(key, URLEncoder.encode(value, "utf-8"));
        cookie.setPath("/"
); cookie.setMaxAge(30*24*3600); resp.addCookie(cookie); } //一次性cookie public void addCookieone(HttpServletResponse resp,String key,String value) throws UnsupportedEncodingException { //因為tomcat7以上對中文cookie的限制,所以要編碼 if (value==null){ return; } Cookie cookie = new
Cookie(key, URLEncoder.encode(value, "utf-8")); cookie.setPath("/"); cookie.setMaxAge(-1); resp.addCookie(cookie); }
  • 刪除cookie
 public void deleteCookie(HttpServletResponse resp,String key){
        Cookie cookie =new Cookie(key,null);
        cookie.setPath("/");
        cookie.setMaxAge(0);
        resp.addCookie(cookie);
    }
  • 查詢cookie
 //查詢cookie
    public static String selectCookie(HttpServletRequest request, String key) throws UnsupportedEncodingException {
        Map<String, Cookie> mapcookie = readCookie(request);
        if (mapcookie.containsKey(key)){
            Cookie cookie=mapcookie.get(key);
            //這裡是解碼
            String str = URLDecoder.decode(cookie.getValue(), "utf-8");
            return str;
        }else return null;
    }
  • 讀取cookie 即檢視所有的cookie
    //讀取cookie
    public static Map<String, Cookie> readCookie(HttpServletRequest request) throws UnsupportedEncodingException {
        Cookie[] cookies = request.getCookies();
        Map<String, Cookie> mapcookie=new HashMap<String, Cookie>();
        if (cookies!=null){
            for (Cookie cookie:cookies){
                mapcookie.put(cookie.getName(),cookie);
            }
        }
        return mapcookie;
    }

session的使用

  • HttpSession session = req.getSession();//建立session物件
  • 這個時候的post的方法內容則為
@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //System.out.println(req.getParameter("username"));//req.getParameter();這個方法就是獲取jsp頁面form表單傳送過來的資料。
        //System.out.println(req.getParameter("password"));//這裡執行並在頁面輸入後提交  則會在控制檯看到輸入內容。
        HttpSession session = req.getSession();//建立session物件
        String username= (String) req.getParameter("username");
        session.setAttribute("username",username);
        req.getRequestDispatcher("/success.jsp").forward(req,resp);
    }
  • 在跳轉的頁面中加入程式碼
    <%=request.getSession().getAttribute("username")%>
  • 執行檢視 可以看到輸入的使用者名稱出現在頁面中
  • 這樣的話只要是在一次瀏覽器訪問中,即可使用該程式碼進行使用者名稱的使用,不管頁面之間是否是相關聯的。一次存入,多次使用(在不同的地點)。

下一節講述資訊如何寫入資料庫(註冊),和資料庫的資訊查詢並操作(登入)

不定期更新專案內容以及相關知識點,有興趣的話可以關注我的csdn部落格pckonline,或者會使用github的同學可以搜尋pckonline檢視各種javaee的原始碼