1.经常使用操做:javascript
package cn.zzsxt.lee.web.cookie; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetCookieServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取cookie信息 Cookie[] cookies = req.getCookies(); for (int i = 0; i < cookies.length; i++) { System.out.println(cookies[i].getName() + ":" + cookies[i].getValue()); } } }
package cn.zzsxt.lee.web.cookie; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @description * * cookie: * 在服务器被建立,返回给客户端,而且保存客户端 * 若是设置了SETMAXAGE(int seconds),会把cookie保存在客户端的硬盘中 * 若是没有设置,会默认把cookie保存在浏览器的内存中 * 一旦设置setPath():只能经过设置的路径才能获取到当前的cookie信息 * @author Seven Lee * @date * */ @WebServlet("/cookie.sxt") public class CookieServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 建立cookie对象 Cookie compCookie = new Cookie("computer", "HP"); // 服务器把cookie响应给客户端,全部的cookie对象,都会在服务器端建立,经过http响应给客户端(浏览器) Cookie keyCookie = new Cookie("key", "doubleflybird"); Cookie mouseCookie = new Cookie("mouse", "leishe"); mouseCookie.setMaxAge(60*60*24*30);//若是不设置使用时间,那么将取不到Cookie的值 System.out.println(req.getContextPath());// 项目名(在tomcat中部署的项目名) // /zzsxt/shopping.jsp keyCookie.setPath(req.getContextPath()+"/getCookie.sxt");// 一旦设置了cookie的路径,就只能经过这一个路径才能获取到cookie信息 resp.addCookie(compCookie); resp.addCookie(mouseCookie); resp.addCookie(keyCookie); } }
2.Cookie和Session登陆实例:html
注册:java
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'register.jsp' starting page</title> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <script type="text/javascript"> var sexFlag = false; var untFlag = false; function checkSex() { var sex = $(":checked").val(); if (sex != null) { // 验证成功 alert(111); sexFlag = true; } else { // 验证失败 alert(222); sexFlag = false; } } function checkUniversity() { var unt = $(":selected").val(); if (unt != 0 && unt != null) { // 验证成功 untFlag = true; } else { untFlag = false; } } $(function() { $("form").submit(function() { checkSex(); checkUniversity(); return sexFlag && untFlag; }); }); </script> </head> <body> <h1>注册页面</h1> <form action="register.sxt" method="post"> 用户名: <input type="text" name="username" id="uname" /> 密码: <input type="password" name="pwd" id="pawd" /> 性别: <input class="sexes" type="radio" name="sex" value="male" /> 男 <input class="sexes" type="radio" name="sex" value="female" /> 女 院校:<select name="unt"> <option value="0">请选择院校</option> <option value="zzsxt">天津大学</option> <option value="bjsxt">北京大学</option> </select> <input type="submit" value="提交" /> </form> </body> </html>
注册处理:jquery
package cn.zzsxt.lee.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.zzsxt.lee.web.dao.IUserDao; import cn.zzsxt.lee.web.dao.impl.UserDaoImpl; import cn.zzsxt.lee.web.entity.User; import cn.zzsxt.lee.web.utils.BASE64; import cn.zzsxt.lee.web.utils.MD5; import cn.zzsxt.lee.web.utils.UUIDUtils; @WebServlet("/register.sxt") public class RegisterServlet extends HttpServlet { private IUserDao userDao = new UserDaoImpl(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String username = request.getParameter("username"); String pwd = request.getParameter("pwd"); String sex = request.getParameterValues("sex")[0]; String university = request.getParameterValues("unt")[0]; User user = new User(); user.setId(UUIDUtils.getUUid()); user.setUsername(username); user.setRealPassword(pwd); pwd = MD5.getMD5(pwd); user.setPassword(pwd); user.setSex(sex); user.setUniversity(university); user.setAuthority(0); int result = 0; try { result = userDao.registerUser(user); } catch (Exception e) { e.printStackTrace(); } if (result > 0) { response.sendRedirect("login.jsp"); return; } } }
登陆以前必须先判断获取Cookie:web
package cn.zzsxt.lee.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.zzsxt.lee.web.utils.MD5; @WebServlet("/checkLogin2.sxt") public class CheckLogin2 extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = ""; String password = ""; // 1.获取cookie的值 Cookie[] cookies = request.getCookies(); // 2.判断cookie数组是否为null if (cookies != null) { // 3.判断cookie中是否有用户名和密码 for (int i = 0; i < cookies.length; i++) { if ("uname".equals(cookies[i].getName())) { // 4.若是cookie中有用户名和密码,就获取 username = cookies[i].getValue(); } if ("pwd".equals(cookies[i].getName())) { password = cookies[i].getValue(); } } } request.getSession().setAttribute("name", username); request.getSession().setAttribute("pwd", password); response.sendRedirect("login.jsp"); return; } }
登陆:数组
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="login.sxt" method="post"> 用户名: <input type="text" name="username" value="${name }" /> 密码: <input type="password" name="pwd" value="${pwd }" /> <input type="submit" value="提交" /> </form> </body> </html>
登陆处理:浏览器
package cn.zzsxt.lee.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.zzsxt.lee.web.dao.IUserDao; import cn.zzsxt.lee.web.dao.impl.UserDaoImpl; import cn.zzsxt.lee.web.entity.User; import cn.zzsxt.lee.web.utils.MD5; @WebServlet("/login.sxt") public class LoginServlet extends HttpServlet { private IUserDao userDao = new UserDaoImpl(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String username = request.getParameter("username"); String pwd = request.getParameter("pwd"); pwd = MD5.getMD5(pwd); User user = new User(); user.setUsername(username); user.setPassword(pwd); try { User u = userDao.selectUserByUsernameAndPassword(user); if (u.getId() != null && !"".equals(u.getId())) { // 登陆成功 // 存入session request.getSession().setAttribute("user", u); Cookie usernameCookie = new Cookie("uname", u.getUsername()); Cookie pwdCookie = new Cookie("pwd", u.getRealPassword()); usernameCookie.setMaxAge(60 * 60 * 24); pwdCookie.setMaxAge(60 * 60 * 24); response.addCookie(usernameCookie); response.addCookie(pwdCookie); response.sendRedirect("index.jsp"); } else { // 登陆失败 } } catch (Exception e) { e.printStackTrace(); } } }
frameset框架主页:tomcat
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <frameset rows="100,*"> <frame src="top.jsp" name="top" /> <frameset cols="200,*"> <frame src="left.jsp" name="left" /> <frame src="right.jsp" name="right" /> </frameset> </frameset> </html>
Filter内Cookie的设置:服务器
package cn.zzsxt.lee.web.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @description 编码过滤器 * @author Seven Lee * @date 2017年7月28日下午4:48:59 * */ public class GlobalFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 若是是设置编码,就必须添加chain.doFilter(); // chain.doFilter(request, response); //放这里有BUG,登陆的时候第一次不会出现帐号密码,刷新一次才会出现 // 获取cookie数组 Cookie[] cookies = request.getCookies(); if (cookies != null) {// 防止空指针 String username = ""; String password = ""; for (int i = 0; i < cookies.length; i++) { System.out.println(cookies[i].getValue()); if ("username".equals(cookies[i].getName())) { username = cookies[i].getValue(); } if ("password".equals(cookies[i].getName())) { password = cookies[i].getValue(); } } request.getSession().setAttribute("username", username); request.getSession().setAttribute("password", password);
chain.doFilter(request, response); //放最后没BUG } else { for(int i = 0; i < cookies.length; i++){ System.out.println(cookies[i].getValue()); } response.sendRedirect("login.jsp"); return; } } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } }
Top处登陆成功:cookie
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'top.jsp' starting page</title> <script type="text/javascript"> function trunLogin() { window.top.location.href = "login.jsp"; } </script> </head> <body> <c:choose> <c:when test="${sessionScope.user.username != null }"> //指的是登陆时user对象的属性 <h1>欢迎:${sessionScope.user.username }</h1> <a href="">注销</a> </c:when> <c:when test="${sessionScope.username != null }"> //指的是当前Cookie的属性 <h1>欢迎:${sessionScope.username }</h1> <a href="">注销</a> </c:when> <c:otherwise> <a href="javascript:void(0);" onclick="trunLogin();">请登陆</a> </c:otherwise> </c:choose> </body> </html>