cookie和session

1)介绍

cookie是由 服务器端生成,通过response写回浏览器,保留在浏览器中。

下一次访问,浏览器会根据不同的规则,携带不同的cookie(通过request)我们服务器可以接收cookie。

cookie API:

Cookie  new cookie(String key,String val)

response.addCookie(cookie)

Cookie[] cookies=request.getCookies()

 1     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         Cookie cookie=new Cookie("A","12233");
 3         //获取cookie 所有的cookie,返回追是数组形式。
 4         Cookie[] cookies=request.getCookies();
 5         for(Cookie ck:cookies){
 6             //获取cookie的value
 7             System.out.println(ck.getValue());
 8             //获取cookie的key
 9             System.out.println(ck.getName());
10         }
11         //获取指定的cookie
12             
13         //写回cookie
14         response.addCookie(cookie);
15 
16     }

 2)案例:访问网站记录用户访问时间。

分析:1、创建一个servlet 接收请求。

     2、从request 获取对应的cookie。

   3、获取上次登录的cookie并打印,判断该值是否为空,如果为空则表示第一次登录。并输出。

   4、记录当前登录的时间并更新cookie里的值。

代码:

 1 package jd.com.cookie_rem;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.Cookie;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.io.IOException;
10 import java.text.DateFormat;
11 import java.text.SimpleDateFormat;
12 import java.util.Date;
13 
14 @WebServlet(name = "Servlet_Rem")
15 public class Servlet_Rem extends HttpServlet {
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17 
18     }
19 
20     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21         //0)设置编码。
22         response.setContentType("text/html;charset=utf-8");
23         //1)获取cookie 和)输出cookie
24         Cookie[] cookies=request.getCookies();
25         String c=getCookiebyName("lastime",cookies);
26         if(c==null){
27             response.getWriter().print("the first  time accesss the  website!");
28         }else{
29             Long da_l=Long.parseLong(c);
30             SimpleDateFormat date=new SimpleDateFormat();
31             String data_str=date.format(da_l);
32             response.getWriter().print(" the last time of accessing website is:"+" "+data_str);
33         }
34         //3)记录当前访问时间。
35         Long  data=new Date().getTime();
36         Cookie new_rec=new Cookie("lastime",data.toString());
37         response.addCookie(new_rec);
38     }
39      private  String getCookiebyName(String name,Cookie[] cookies){
40         String flag=null;
41         if(cookies!=null){
42             for(Cookie cookie:cookies){
43                 if (cookie.getName().equals(name)){
44                     flag=cookie.getValue();
45                 }
46             }
47         }
48         return flag;
49 
50     }
51 }

 上面设置的cookie,如果浏览器断开,再次访问的时候,相应的cookie也没有了。

3)cookie的持久化:

setMaxAge(int second)设置cookie过期时间,单位是秒。

 在设置中:

4)设置cookie路径,以"/"开始 以"/"结束。为特定的url设定cookie。

setPath();
new_rec.setPath("/rem"+"/");

 4)session

是服务端生成,浏览器在通过方法:通过HttpServletRequest(request)获取session对象,getsession()方法获取,因为session是域对象,所以可以通过xxxAttribute()方法获取。对应的session值。

通过invalidate()  设置成session过期。

浏览器从session获取对应的session值,如果有,给浏览器返回Jsessionid,如果没有,则服务器创建,并返回对应的Jsessionid.

 


 

posted @ 2018-03-18 17:39  evil_liu  阅读(277)  评论(0编辑  收藏  举报