zoukankan      html  css  js  c++  java
  • Session小案例-----简单购物车的使用

    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();
    
    		//覆盖server的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);
    	}
    
    }
    


  • 相关阅读:
    【HAOI2014】贴海报
    【HAOI2016】食物链
    【NOI2003】银河英雄传
    【HAOI2013】花卉节
    【BZOJ1702】[usaco2007margold]队列平衡
    【网络流24】餐巾
    洛谷 [P1265] 公路修建
    全排列与 康托展开
    洛谷 [P1403] 约数研究
    高精度模板
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6934836.html
Copyright © 2011-2022 走看看