一.Cookie对象
显示用户上次访问时间:
package cn.itcast.chapter03.cookie;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
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;
/**
* Servlet implementation class example
*/
@WebServlet("/LastAccessServlet")
public class LastAccessServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//指定服务器输出内容的编码方式UTF-8,防止发生乱码
response.setContentType("text/html;charset=UTF-8");
String lastAccessTime = null;
//获取所有的cookie,并将这些cookie存放在数组中
Cookie[] cookies = request.getCookies();
//遍历cookies数组
for(int i=0; cookies !=null && i<cookies.length; i++) {
if("lastAccess".equals(cookies[i].getName())) {
//如果cookie的名称为lastAccess,获取该cookie的值
lastAccessTime = cookies[i].getValue();
break;
}
}
//判断是否存在名称为lastAccess的cookie
if(lastAccessTime == null) {
response.getWriter().print("您是首次访问本站!!!");
}else {
response.getWriter().print("您上次的访问时间是:" + lastAccessTime);
}
//创建cookie,将当前时间作为cookie的值发送给客户端
String currentTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
Cookie cookie = new Cookie("lastAccess",currentTime);
//发送cookie
response.addCookie(cookie);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
二.Session对象
实现购物车:
package cn.itcast.chapter03.cookie;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet("/Book")
public class Book extends HttpServlet {
private static final long serialVersionUID = 1L;
private String id;
private String name;
public Book() {
}
public Book(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.itcast.chapter03.cookie;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.annotation.WebServlet;
@WebServlet("/BookDB")
public class BookDB{
private static Map<String, Book>books = new LinkedHashMap<String, Book>();
static {
books.put("1", new Book("1", "javaweb 开发"));
books.put("2", new Book("2", "jdbc 开发"));
books.put("3", new Book("3", "java 基础"));
books.put("4", new Book("4", "struts 开发"));
books.put("5", new Book("5", "spring 开发"));
}
//获取所有的图书
public static Collection<Book> getAll(){
return books.values();
}
public static Book getBook(String id) {
return books.get(id);
}
}
package cn.itcast.chapter03.cookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
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 javax.servlet.http.HttpSession;
@WebServlet("/CartServlet")
public class CartServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
List<Book> cart = null;
boolean purFlag = true;
HttpSession session = req.getSession(false);
if(session == null) {
purFlag = false;
}else {
cart = (List) session.getAttribute("cart");
if(cart == null) {
purFlag = false;
}
}
if(!purFlag) {
out.write("对不起!您还没有购买任何商品!<br />");
}else {
out.write("您购买的图书有: <br />");
double price = 0;
for (Book book : cart) {
out.write(book.getName() + "<br />");
}
}
}
}
package cn.itcast.chapter03.cookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ListBookServlet")
public class ListBookServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
Collection<Book> books = BookDB.getAll();
out.write("本站提供的图书有:<br />");
for(Book book : books) {
String url = "/chapert03/PurchaseServlet?id=" +book.getId();
out.write(book.getName() + "<a href='" + url + "'>点击购买</a><br />");
}
}
}
package cn.itcast.chapter03.cookie;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
/**
* Servlet implementation class PurchaseServlet
*/
@WebServlet("/PurchaseServlet")
public class PurchaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter("id");
if(id == null) {
String url = "/chapter03/ListBookServlet";
resp.sendRedirect(url);
return;
}
Book book = BookDB.getBook(id);
HttpSession session = req.getSession();
List<Book> cart = (List) session.getAttribute("cart");
if(cart == null) {
cart = new ArrayList<Book>();
session.setAttribute("cart", cart);
}
cart.add(book);
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60*30);
cookie.setPath("/chapter03");
resp.addCookie(cookie);
String url = "/chapter03/CartServlet";
resp.sendRedirect(url);
}
}