一、Cookie
1.为什么要使用Cookie?
Cookie是将用户的数据以文本的形式保存在了本地。可以做到简化登录。但缺点在于无法保障数据的安全。
2.如何使用Cookie?
a.导入Cookie包。javax.servlet.http.Cookie
b.创建Cookie: Cookie cookie = new Cookie("","");
参数说明:创建只有这一种形式,第一个参数为Cookie名称,第二个参数为Cookie的具体值。
注意:Cookie值只能是String类型
c.写入Cookie:response.addCookie(创建的Cookie对象);
d.Cookie常用的方法:
setMaxAge();设置Cookie的最大有效时间。以秒为单位。
getName():用来获取Cookie的名称,
getValue():获取Cookie中保存的数据值。
setValue();设置Cookie要保存的数据值
getMaxAge():获取Cookie的最大有效时间
3.Cookie在实战中用在哪?
a.简化登录。在用户第一次登录成功以后,要用户的用户名放入Cookie,设置最大有效时间,这样就可以做到在有效时间
内免登录的效果。
b.在电商软件中,将用户访问过的商品信息,放入Cookie,可以方便用户回顾浏览的历史。
c.在有效时间范围内,也可以做到用户倒链访问某个页面
二、Session:
1.为什么要使用session?
Session:使用用来对用户访问的控制与回话跟踪。(回话:request,以及response)
2.如何使用Session?
a.创建Session:HttpSession session = request.getSession();
b.将需要在每个页面中要使用的数据放入到session作用域中。:session.setAttribute(key,value);
参数解释:key是要获取session中数据的标识,只能是String类型
value:是Object类型。
c.常用的方法:
1.setAttribute()
2.getAttribute("");返回Object类型。通过参数名称获取与其指向的数据
3.getMaxInactiveInterval();设置Session的最大有效性,单位:秒
4.invalidate():销毁当前的session。这个方法往往用在系统用户登出。(实战中写完此方法,还要将对象赋值为null)
5.getId():获取当前session的Id编号。
3.在哪使用Session?
因为session的作用在浏览器,所以不便于将大量的数据集合放入session。
一般会在用户登录成功后,将用户的名放入session。
在当前浏览器未关闭时,也可以做到防止用户倒链的情况发生,比建议用它实现免登录,无意义。
三、案例
1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 //设置字符编码集 3 request.setCharacterEncoding("UTF-8"); 4 response.setCharacterEncoding("UTF-8"); 5 //获取用户提交请求校验的信息 6 String name=request.getParameter("name"); 7 String pwd=request.getParameter("pwd"); 8 9 //接收校验后返回的结果 10 String poname=petOwnerBiz.searchPetOwnerBynamepwd(name, pwd); 11 if(null!=poname) { 12 //创建Cookie 13 Cookie cookie = new Cookie("poname",poname); 14 //设置Cookie的最大有效性 秒 15 cookie.setMaxAge(300); 16 //写入Cookie 17 response.addCookie(cookie); 18 HttpSession session=request.getSession(); 19 session.setAttribute("poname", poname); 20 response.sendRedirect("main.jsp"); 21 22 } 23 }
1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 /* 3 * 获取保存的Cookie,从该Cookie中获取保存的用户登录信息 4 * 如果存在将信息保存在session/request作用域重定向或转发到某个servlet,或页面 5 * 如果没有信息,则直接重定向到登录界面 6 */ 7 //获取本地的Cookie 8 Cookie[] cookies = request.getCookies(); 9 String poname=null; 10 //循环Cookie数组,找到需要的cookie对象,拿到用户保存的登录信息 11 for(int i=0;i<cookies.length;i++) { 12 Cookie cookie=cookies[i]; 13 if("poname".equals(cookie.getName())) { 14 poname=cookie.getValue(); 15 break; 16 } 17 } 18 if(null!=poname) { 19 HttpSession session=request.getSession(); 20 session.setAttribute("poname", poname); 21 response.sendRedirect("main.jsp"); 22 return; 23 } 24 response.sendRedirect("login.jsp"); 25 26 }
1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 //设置字符编码集 3 request.setCharacterEncoding("UTF-8"); 4 response.setCharacterEncoding("UTF-8"); 5 //获取用户提交请求校验的信息 6 String name=request.getParameter("name"); 7 String pwd=request.getParameter("pwd"); 8 9 //接收校验后返回的结果 10 String poname=petOwnerBiz.searchPetOwnerBynamepwd(name, pwd); 11 if(null!=poname) { 12 13 HttpSession session=request.getSession(); 14 session.setAttribute("poname", poname); 15 response.sendRedirect("main.jsp"); 16 //return; 17 }else { 18 response.sendRedirect("login2.jsp"); 19 } 20 21 }