记录上一次访问的时间
@WebServlet("/Day25T01")
public class Test01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//Cookie应用场景: 记录上一次访问的时间
//设置相应编码
resp.setHeader("content-type", "html/text;charset=UTF-8");
//获取请求头Cookie
Cookie[] cookies = req.getCookies();
for (Cookie c : cookies) {
System.out.println("上次访问的时间为:" + c.getValue());
}
//1.创建Cookie对象
Cookie cookie = new Cookie("AccessTime", System.currentTimeMillis() + "");
//2.设置Cookie存活时间
cookie.setMaxAge(60 * 5);
resp.addCookie(cookie);
//上次访问的时间为:1551101606805
//上次访问的时间为:1551101635409
}
}
删除Cookie
我在使用这个的时候,访问客户端一直会提示下载文件,不知道为什么大佬可以留言指正。
@WebServlet("/Day25T02")
public class Test02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("content-type", "html/text;charset=UTF-8");
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
System.out.println("上次访问的时间为:" + c.getValue());
c.setMaxAge(0);//删除Cookie
resp.addCookie(c);
}
}
}
}
模拟登录
<%--
Created by IntelliJ IDEA.
User: Admin
Date: 2019/2/25
Time: 22:55
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script>
function getCookieValues(key) {
//1.通过js来获取Cookie
var cookie = document.cookie;
//2.拆分cookies
var cookies = cookie.split("; ");
for (var i = 0; i < cookies.length; i++) {
var c = cookies[i];
var cs = c.split("=");
var name = cs[0];
var value = cs[1];
if (key == value) {
return value;
}
}
}
window.onload = function () {
var remember = getCookieValues("remember");
var username = getCookieValues("username");
if (remember == true) {
document.getElementById("remember").checked = "checked";
document.getElementById("username").value = username;
}
}
</script>
</head>
<body>
<form action="/JavaWeb_war_exploded/login" method="post">
<table border="1">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2">
<input id="remember" type="checkbox" name="remember" value="true">记住用户名
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="登陆">
</td>
</tr>
</table>
</form>
</body>
</html>
@WebServlet("/login")
public class Test03 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决乱码
resp.setHeader("content-type", "text/html;charset=UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
String remember = req.getParameter("remember");
boolean flag = "zhangsan".equals(username) && "123".equals(password);
if (flag) {
//登陆成功
} else {
flag = false;
}
/*if (flag) {
resp.getWriter().write("登陆成功");
} else {
resp.getWriter().write("登陆失败");
}*/
if ("true".equals(remember) && flag) {
Cookie c1 = new Cookie("username", username);
c1.setMaxAge(60 * 5);
resp.addCookie(c1);
Cookie c2 = new Cookie("remember", remember);
c1.setMaxAge(60 * 5);
resp.addCookie(c2);
resp.getWriter().write("登陆成功");
//req.getRequestDispatcher("/DTest04").forward(req, resp);
} else {
//登陆失败
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
resp.getWriter().write("登陆失败");
}
}
}
}
查看历史纪录
@WebServlet("/showAllBook")
public class showAllBook extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("content-type", "text/html;charset=UTF-8");
Map<Integer, Book> books = DBUtils.getAllBooks();
PrintWriter pw = resp.getWriter();
pw.write("图书列表:");
for (Map.Entry<Integer, Book> entry : DBUtils.getAllBooks().entrySet()) {
Book book = entry.getValue();
String str = "<br/><a href='http://localhost:8080/JavaWeb_war_exploded/showBookById?id=" + book.getId() + "'>" + book.getName() + "</a>";
pw.write(str);
}
//历史纪录
pw.write("<br/>" + "历史浏览的记录:");
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("historyBookId")) {
String result = c.getValue();
String[] res = result.split("-");
for (String s : res) {
Book book = DBUtils.findBook(Integer.parseInt(s));
pw.write("<br/>" + book.getName());
}
}
}
}
}
}
@WebServlet("/showBookById")
public class showBookById extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("content-type", "text/html;charset=UTF-8");
String str_id = req.getParameter("id");
int id = Integer.parseInt(str_id);
PrintWriter pw = resp.getWriter();
pw.write("书的id为:" + id);
Book book = DBUtils.findBook(id);
pw.write("<br/>" + book.toString());
Cookie[] cookies = req.getCookies();
if (cookies == null) {
//未访问
System.out.println("未访问");
Cookie cookie = new Cookie("historyBookId", str_id);
cookie.setMaxAge(5 * 60);
resp.addCookie(cookie);
} else {
//已访问
//拼接Cookie
for (Cookie c : cookies) {
if (c.getName().equals("historyBookId")) {
String historyBookId = c.getValue();
historyBookId = historyBookId.replace(str_id, "");
historyBookId = historyBookId.replace("--", "-");
if (historyBookId.startsWith("-")) {
historyBookId = historyBookId.substring(1);
}
historyBookId += "-" + str_id;
historyBookId = historyBookId.replace("--", "-");
System.out.println(historyBookId);
c.setValue(historyBookId);
c.setMaxAge(5 * 60);
resp.addCookie(c);
}
}
}
}
}
public class DBUtils {
private static Map<Integer, Book> books = new HashMap<>();
static {
books.put(1, new Book(1, "Java入门到精通", "aa", "123.66"));
books.put(2, new Book(2, "SQL入门到精通", "bb", "123.66"));
books.put(3, new Book(3, "Python入门到精通", "cc", "123.66"));
books.put(4, new Book(4, "PHP入门到精通", "dd", "123.66"));
books.put(5, new Book(5, "JavaScript入门到精通", "ee", "123.66"));
}
public static Map<Integer, Book> getAllBooks() {
return books;
}
public static Book findBook(Integer id) {
return books.get(id);
}
}