Session小案例-----簡單購物車的使用
同上篇一樣,這裏的處理請求和頁面顯示同樣用的都是servlet.
功能實現如下:
1,顯示網站的所有商品
2,用戶點擊購買後,能夠記住用戶選擇的商品
3,實現了多個會話共享一個session
4, 實現了瀏覽器禁用cookie後數據共享問題的處理
首頁:
package cn.itcast.shopping; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //首頁,顯示網站所有商品 public class IndexServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); //爲了用戶第一次訪問 request.getSession(); //1.顯示網站所有商品 out.print("本網站有如下書籍:<br/>"); Map<String,Book> map = DB.getMap(); for(Map.Entry<String, Book> entry : map.entrySet()){ Book book = entry.getValue(); String url = "/day07/servlet/BuyServlet?id="+book.getId(); url = response.encodeURL(url); //得到重寫後的url out.print(book.getName() + "<a href='"+url+"'>購買</a><br/>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } class DB{ private static Map<String,Book> map = new HashMap(); static{ map.put("1", new Book("1","javaweb開發","老張")); map.put("2", new Book("2","jdbc開發","老黎")); map.put("3", new Book("3","struts2開發","老張")); map.put("4", new Book("4","spring開發","老黎")); map.put("5", new Book("5","hibernate開發","老張")); } public static Map getMap(){ return map; } } class Book implements Serializable{ private String id; private String name; private String author; public Book() { super(); // TODO Auto-generated constructor stub } public Book(String id, String name, String author) { super(); this.id = id; this.name = name; this.author = author; } 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; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
購買頁面:package cn.itcast.shopping; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; 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; //購買 public class BuyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.得到用戶想買的書 String id = request.getParameter("id"); Book book = (Book) DB.getMap().get(id); //2.把用戶買的書加在session中用於管理所有書的集合中了 HttpSession session = request.getSession(); //覆蓋服務器的JSESSIONID的cookie Cookie cookie = new Cookie("JSESSIONID",session.getId()); cookie.setMaxAge(30*60); cookie.setPath("/day07"); response.addCookie(cookie); List list = (List) session.getAttribute("list"); if(list==null){ list = new ArrayList(); session.setAttribute("list", list); } list.add(book); //3.跳轉到購物車顯示列表 //request.getRequestDispatcher("/servlet/ListCartServlet").forward(request, response); //自動帶上session的ID號 String url = response.encodeRedirectURL("/day07/servlet/ListCartServlet"); //實現 url重寫 response.sendRedirect(url); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
購物車列表顯示頁面:package cn.itcast.shopping; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //顯示用戶買的所有書(購物車列表顯示頁面) public class ListCartServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.print("您購買了如下商品:<br/>"); //先判斷瀏覽器有沒以cookie的形式帶sessionID過來,如果沒有則判斷URL地址有沒有帶sessionID List<Book> list = (List) request.getSession().getAttribute("list"); for(Book book : list){ out.print(book.getName() + "<br/>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Session小案例-----簡單購物車的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.