一.学习内容
1.会话以及会话管理技术
(1)Cookie对象
(2)Session对象
2.实现购物车的例子
(1)创建Book封装图书信息:Book
(2)创建BookDB,模拟数据库,里面保存图书
(3)提供图书的购买页面:ListBookServlet
(4)添加购物车:PurcharseServlet
(5)回显购物车图书信息:CartServlet
3.编写代码
(1)
package demo;
import java.io.IOException;
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 LastAccessServlet
*/
@WebServlet({"/last" })
public class LastAccessServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public LastAccessServlet() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("test/html;charset=utf-8");
System.out.println("收到前端请求");
Cookie[] cookies=request.getCookies();
String lastTime=null;
for(int i=0;cookies!=null && i< cookies.length;i++) {
String name=cookies[i].getName();
if("lastAccerss".equals(name)) {
lastTime=cookies[i].getValue();
}
}
if(lastTime==null) {
response.getWriter().print("您是首次访问网站");
}else {
response.getWriter().print("您上次访问时间"+lastTime);
}
String time=String.format("%tf<tT", new Date());
Cookie cookie=new Cookie("LastAccerss",time);
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
(2)
package demo1;
public class Book {
private String id;
private String name;
public Book() {
}
public Book(String id, String name) {
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;
}
}
(3)
package demo1;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
public class BookDB {
private static Map<String,Book> map = new LinkedHashMap<String,Book>();
static{
map.put("1", new Book("1","javaWeb"));
map.put("2", new Book("2","jdbc入门"));
map.put("3", new Book("3","java基础"));
map.put("4", new Book("4","struts框架"));
map.put("5", new Book("5","hibernate框架"));
}
//1.得到所有图书
public static Collection<Book> getAll(){
return map.values();
}
//2.根据map的key,也就是图书的id,得到某本图书
public static Book getBook(String id){
return map.get(id);
}
(4)
package demo1;
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;
/**
* Servlet implementation class CartServlet
*/
@WebServlet("/Cart")
public class CartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("test/html;charset=utf-8");
PrintWriter out =response.getWriter();
List <Book> cart=null;
HttpSession session=request.getSession(false);
boolean cartFlag=true;
if(session==null) {
cartFlag=false;
}else {
cart=(List<Book>)session.getAttribute("cart");
if(cart==null) {
cartFlag=false;
}
}
if(!cartFlag) {
out.print("对不起,你的购物车里面没有图书,请去购买");
}else {
out.print("购买图书如下:" +"<br/>");
for(Book b:cart) {
out.print("购买的图书:" +b.getName()+"<br/>");
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
(5)
```java
package demo1;
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;
/**
* Servlet implementation class ListBookServlet
*/
@WebServlet("/List")
public class ListBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("test/html;charset=utf-8");
Collection<Book> books=BookDB.getAll();
PrintWriter out =response.getWriter();
out.print("以下是本网站售卖的书籍:"+"<br/><br/>");
for(Book b:books) {
String name=b.getName();
String id=b.getId();
String url="<a href=/demo1/Purchase?id="+id+">点击购买</a>";
out.print("图书名称: "+name+" "+url+"<br/><br/>");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
(6)
package demo1;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 javax.servlet.http.HttpSession;
/**
* Servlet implementation class PurchaseServlet
*/
@WebServlet("/Pur")
public class PurchaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("test/html;charset=utf-8");
String id =request.getParameter("id");
if(id==null){
response.sendRedirect("demo/list");
return;
}
Book book=BookDB.getBook(id);
HttpSession session=request.getSession();
List<Book> List=(List<Book>) session.getAttribute("cart");
if(List==null) {
List=new ArrayList<Book>();
session.setAttribute("cart", "List");;
}
List.add(book);
Cookie cookie =new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60*60*24*7);
cookie.setPath("demo");
response.addCookie(cookie);
response.sendRedirect("demo1/cart");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}