cookie一些问题
cookie是一个客户端技术,主要是为了解决页面参数传递的问题,要是通过url参数传递的话,那么传递的参数可以看到,不安全。所以才会有cookie技术。
cookie主要有几个方法,首先创建的时候,传递的是key-value字典类型。通过key可以获取到value的值,一般是在别的页面通过key去获取到value的值。
其次cookie有一个setMaxAge方法,这个意思是设置过期时间,>0,=0,<0三种情况:第一个就是设置一个以秒来计的过期时间,如设置一天过期那么就设置24*60*60,如果没过期的话下次进浏览器的时候自带cookie。第二个不设置cookie,当你这样设置差不多意思就是直接废掉了cookie,下个界面直接不能获取到。第三个设置cookie为会话cookie,意思是当此浏览有效,当关闭浏览器下次再浏览不会带有cookie。
cookie还有一个方法是setPath,这个参数主要是针对访问路径的问题。举个粟子,当前servlet的@webServlet(vaue="/cookie/login"),跳转下个界面servlet的@wevServlet(value="welcome"),那么两个path其实是不一样的,如果在下个界面访问cookie的话那么getCookies就会返回空的Cookie数组。所以大多数做法就是在初始化cookie的时候设置这个path,setPath("/")由于"/"代表全路径。这样访问的时候下个界面servlet就可以获取到Cookie数组,然后就可以做事情了。
注意点:由于cookie不支持中文,所以设置Cookie的value时候需要编码,不然访问的时候会500错误,代表服务器错误。需要通过URLEncoder.encode(String string,"UTF-8")设置编码,然后再下个servlet界面获取值的时候需要解码URLDecoder.decode(String string,"UTF-8")。
总结:设置cookie的时候需要将初始化的cookie到response,响应给客户端,然后客户端就会自己存储,下次客户端会自己取出来,服务器只需在request.getCookies里面获取cookie,通过cookie的key去获取自己想要的value。