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>