java中的session和cookie
阿新 • • 發佈:2018-11-01
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的原始碼