会话
用户打开浏览器 点击了很多链接 访问了很多资源 关闭浏览器这个过程可以称之为会话
有状态会话:
保存会话的两种技术
cookie
- 客户端技术(响应,请求)
session
- 服务器技术,利用这个技术可以保存用户的会话信息。我们可以把信息放在session中
常见场景:网站登录之后,下次不用再登录了 第二次访问直接就上去了

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//服务器告诉你,你来的时间。把这个时间封装为一个Cookie,下一次带来就知道你来了//解决控制台中文乱码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");//解决网页中文乱码resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();//Cookie 服务端端从客户端获取Cookie[] cookies = req.getCookies(); //返回一个数组 说明可以存在多个//判断Cookie是否存在if (cookies != null) {//如果存在怎么办out.println("你上次访问的时间是:");for (int i = 0; i < cookies.length; i++) {Cookie cookie = cookies[i];//获取Cookie的名字if (cookie.getName().equals("LastLoginTime")) {//将字符串解析为长整型long LastLoginTime = Long.parseLong(cookie.getValue());Date date = new Date(LastLoginTime);out.println(date.toLocaleString());}}}else {out.println("这是你第一次访问本站");}//服务器给客户端响应一个CookieCookie cookie = new Cookie("LastLoginTime",System.currentTimeMillis()+"");resp.addCookie(cookie);}
<servlet><servlet-name>cookiedemo1</servlet-name><servlet-class>com.deng.servlet.CookieDemo1</servlet-class></servlet><servlet-mapping><servlet-name>cookiedemo1</servlet-name><url-pattern>/cookiedemo1</url-pattern></servlet-mapping>
- 从请求中拿到cookie信息
- 服务器响应给客户端cookie
cookie一般会保存在本地的用户目录下 appdata://获取CookieCookie[] cookies = req.getCookies();//获得Cookie中的keycookie.getName()//获得Cookie的valuecookie.getValue()//新建一个CookieCookie cookie = new Cookie(key,value);//设置Cookie的有效期cookie.setMaxAge(int time);//响应给客户端resp.addCookie(cookie);
一个网站的cookie是否存在上限
- 一个cookie只能保存一个信息
- 一个web站点可以给浏览器发送多个cookie 每个站点存放20个cookie
- Cookie大小有限制
- 浏览器的上限大概为300个cookie
删除cookie
- 不设置有限期 关闭浏览器 自动失效
- 设置有效期时间为0
编码解码
//URL编码格式URLEncoder.encode("String value","utf-8");//URL解码格式URLDecoder.decode("String value","utf-8");
