Cookie登录记录用户账号信息
实现目的:进入登录页面,用户如果选择记录用户名的复选框。则后台就需要为浏览器添加Cookie值
1、添加cookie的功能由CookieLoginServlet实现,代码如下
package com.gxa.edu.servlet; import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; 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 CookieLoginServlet extends HttpServlet { public CookieLoginServlet() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); String userid = request.getParameter("userid"); userid = URLEncoder.encode(userid, "UTF-8"); String pass = request.getParameter("pass"); String me = request.getParameter("me"); System.out.println(userid + " " + pass + " " + me); if ("0".equals(me)) { Cookie[] c = request.getCookies(); //获取浏览器中的Cookie boolean f = false; //查询Cookie是否存在的标识 if (c != null) { for (int i = 0; i < c.length; i++) { if ("id".equals(c[i].getName())) { c[i].setValue(userid); f = true; break; } } } if (f == false) { //判断Cookie不存在 Cookie cookie = new Cookie("id", userid); cookie.setMaxAge(60 * 60); cookie.setPath("/web"); //非常重要,记录cookie保存的路径。这样子才能访问到该cookie值。一般“/web”是指的项目工程名 response.addCookie(cookie); } } PrintWriter out = response.getWriter(); out .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.println("<h1>登录成功</h1>"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } public void init() throws ServletException { // Put your code here } }
2、前台登录页面是一个cookie.jsp页面,JSP页面解析cookie的方法很多,我们这里主要利用jquery的插件来完成
(1)首先加载jquery.js核心文件
(2)加载jquery.cookies.js文件,主要提供非常方便的解析cookie的扩展插件
cookie.jsp代码如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'cookie.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="js/jquery.cookies.js"></script> <script type="text/javascript"> $(function() { var v = $.cookie('id'); document.getElementById("userid").value = v; }); </script> </head> <% Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { System.out.println(cookies[i].getName()); } } %> <body> Cookie的登录应用例子 <br> <form action="servlet/CookieLoginServlet" method="post" name="login"> 账号:<input type="text" name="userid" id="userid"></input><br/> 密码:<input type="password" name="pass" id="pass"></input><br/> <input type="checkbox" name="me" id="me" value="0"></input>记录账号<br/> <input type="submit" name="sub" value="登录"></input> </form> </body> </html>