mvc模式网页购物车

本学期学习JSP和Servlet后,老师要求使用MVC模式下编写一个网页购物车,以下是一些主要代码及开发心得
这个是包的截图

mvc模式网页购物车_第1张图片

先是注册页面,编写一个表单,表单方法调用另一个JSP页面(因为我这个页面是写的JSP页面链接数据库,你也可以直接使用DBDao连接数据库)

用户名:
输入密码:
确认密码:

checkregister.jsp

String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"utf-8");
    String password = new String(request.getParameter("password").getBytes("ISO8859_1"),"utf-8");
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost/userdate?characterEncoding=utf-8";
	String usename = "root";
	String psw= "123456";
    Connection conn = DriverManager.getConnection(url,usename,psw);//得到连接  
    PreparedStatement pStmt = conn.prepareStatement("select * from servlet where username = '" + username + "'");  
    ResultSet rs = pStmt.executeQuery();  			
	  if(rs.next()){  
          out.println("");  
      }else{  
          PreparedStatement tmt = conn.prepareStatement("Insert into servlet values('" + username + "','" + password + "')");  
              int rst = tmt.executeUpdate();  
              if (rst != 0){  
                    out.println("");    
              }else{  
                 out.println("");    
              }  

注册以后就是登陆,login也和注册一样,写一个表单然后调用另一个jsp页面所以就不写了

request.getSession().setAttribute("username", username);//这个是把用户名和密码存储到session里
if(username.equals("cgh")&&password.equals("12345")){
	response.sendRedirect("welcome.jsp?username="+username);
}else{
	request.setAttribute("msg","账号密码错误,请重新登录");
	request.getRequestDispatcher("login.jsp").forward(request, response);
	}//判断方法我是写死的,密码必须是相对应的格式

然后是welcom页面,这个页面就是图书商品的页面,在这个页面你能把图书添加到购物车里,添加图书到购物车是使用哈希表存储的

	<%
		BookDao bd1 = new BookDao();
		ArrayList booklist = new ArrayList();
		booklist = bd1.getBooks();
	%>
	
查看购物车 <%//显示页面的大小 int pageSize = 3; int pageMax = (int) ((booklist.size() + (pageSize - 1)) / pageSize); int currentPage = 1; String a = request.getParameter("i"); if (a != null) { currentPage = Integer.parseInt(a); } %> //实现分页 <% for (int i = (currentPage - 1) * pageSize; i < Math.min(currentPage * pageSize, booklist.size()); i++) { %> <% } %>
Id Name Price Number Buy
<%=booklist.get(i).getId()%> <%=booklist.get(i).getName()%> <%=booklist.get(i).getPrice()%> <%=booklist.get(i).getNumber()%> 加入购物车
//分页 <% if (currentPage != 1) { %> first <% } %> <% for (int i = 1; i <= pageMax; i++) { %> <%=i%> <% } %> <% if (currentPage != pageMax) { %> end <% } %>
<% if (session.getAttribute("cart") == null) { Cart cart = new Cart(); session.setAttribute("cart", cart); }//判断购物车是否为空,空的话添加一个购物车到Session里 %>

然后是购物车的

<%
	Cart cart = (Cart) session.getAttribute("cart");
	ArrayList bl = new ArrayList();//使用表单存储图书
	bl = cart.showCart();
	double totalPrice = cart.getTotalPrice();
%>
<% if (bl == null) { System.out.println("空值"); } else { for (int i = 0; i < bl.size(); i++) { %> <% } } %> 返回目录
商品列表
Id Price Name Number 确定删除
<%=bl.get(i).getId()%> <%=bl.get(i).getPrice()%> <%=bl.get(i).getName()%> 删除
totalPrice:<%=totalPrice%> 清空购物车 提交订单

然后是提交表单页面,该页面和上面的添加到购物车方法基本一致,然后V到这里就结束了

接下来是M

//图书,数据是链接数据库得来的
public class Book {
	private int id;
	private double price;
	private String name;
	private int number;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}
//购物车
public class Cart {
	private Hashtable ht = new Hashtable<>();

	public void addBook(String id, Book book) {
		if (ht.containsKey(id)) {
			Book book_buyed = ht.get(id);
			book_buyed.setNumber(book_buyed.getNumber() + 1);// 买过的书数量加1
		} else {
			ht.put(id, book);// 放入表中
		}
	}

	public void deleteBook(String id) {
		ht.remove(id);
	}

	public void clearBook() {

		ht.clear();
	}

	public void updateBook(String id, String number) {
		Book book = ht.get(id);
		book.setNumber(Integer.parseInt(number));
	}

	public ArrayList showCart() {
		ArrayList booklist = new ArrayList<>();

		Enumeration elements = ht.elements();
		while (elements.hasMoreElements()) {
			Book book = (Book) elements.nextElement();
			booklist.add(book);
		}

		return booklist;
	}

	public double getTotalPrice() {
		double totalPrice = 0;
		Enumeration elements = ht.elements();
		while (elements.hasMoreElements()) {
			Book book = (Book) elements.nextElement();
			totalPrice += book.getPrice() *( book.getNumber()+1);
		}
		return totalPrice;
	}
}

接下来是C,我们学的就是Servlet,负责在购物车里对图书进行添加删除等操作

//添加
protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());
		
		HttpSession session = request.getSession();
		Cart cart = null;
		if (session.getAttribute("cart") == null) {
			cart = new Cart();
			session.setAttribute("cart", cart);
		} else {
			cart = (Cart) session.getAttribute("cart");
		}

		Book book = new Book();
		double totalPrice = 0;
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		double price = Double.parseDouble(request.getParameter("price"));

		book.setId(Integer.parseInt(id));
		book.setName(name);
		book.setPrice(price);

		cart.addBook(id, book);
		ArrayList booklist = cart.showCart();
		request.setAttribute("booklist", cart.showCart());
		request.setAttribute("totalPrice", cart.getTotalPrice());
		response.sendRedirect("Cart.jsp");
	}
//更新
protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());

		String[] ids = request.getParameterValues("id");
		String[] number = request.getParameterValues("number");
		for (String s : number) {
			System.out.println(s);
		}
		Cart cart = (Cart) request.getSession().getAttribute("cart");
		if (ids != null && ids.length == number.length)
			for (int i = 0; i < ids.length; i++) {
				cart.updateBook(ids[i], number[i]);
			}

		response.sendRedirect("Cart.jsp");
	}

删除某一项商品和清除购物车就是调用上面购物车cart里的remove和clear方法

然后就是把数据库建好连接好就OK了,有图书表和用户表

mvc模式网页购物车_第2张图片

运行结果:
mvc模式网页购物车_第3张图片
mvc模式网页购物车_第4张图片
在这里插入图片描述
mvc模式网页购物车_第5张图片
mvc模式网页购物车_第6张图片
安全退出就是把Session销毁掉就好了

你可能感兴趣的:(session购物车)