JavaWeb20(MVC购物车01)

笔记:

一、MVC

  • MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

  • MVC模式最早为Trygve Reenskaug提出,为为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

  • MVC可对程序的后期维护和扩展提供了方便,并且使程序某些部分的重用提供了方便。而且MVC也使程序简化,更加直观。

控制器Controller:对请求进行处理,负责请求转发;Servlet
视图View:界面设计人员进行图形界面设计;JSP
模型Model:程序编写程序应用的功能(实现算法等等)、数据库管理;Java对象
用于处理管理数据库、处理业务逻辑、封装实体数据 JavaBean

 注意,MVC不是Java的东西,几乎现在所有B/S结构的软件都采用了MVC设计模式。但是要注意,MVC在B/S结构软件并没有完全实现,例如在我们今后的B/S软件中并不会有事件驱动!

0.引入

> 问题1:先有servlet还是先有jsp?
>
> ​    先有servlet
>
> web发展史:HTML静态页面---serlvet----jsp
>
> 问题2:web开发模式发展:模型1  模型2
>
> 只有静态页面的时候:   HTML+css
>
> 出现servlet之后:可以进行交互
>
> 模型1:第一代----把所有的代码(java+html)写一个jsp页面。  一层
>
> 模型1:第二代---javabean:将数据库交互的代码进行封装  src   二层
>
> 模型2:MVC
>
> 问题:三层架构---开发设计模式,将程序分为三层去管理。
>
> - 显示层:(jsp,doxxx.jsp【serlvet】)
> - 业务逻辑层 (biz,service)
> - 数据访问层(dao )----DB
>
> 三层通过实体对象来互相联系
>
> MVC架构有点类似三层架构

#### 1.什么是MVC

> MVC也是一种开发架构设计模式,与三层架构类似。
>
> MVC封了三个模块:
>
> - M:model 模型(生产数据,筛选数据)——业务逻辑层,数据访问层
> - V:view视图——表示层,职责:显示数据   JSP,HTML页面
> - C:controller控制器——控制层,职责:接收用户请求,处理用户请求,响应结果。serlvet
>
> 总而言之:MVC其实就是将三层架构中的显示层**"一分为二"**,将三层架构中的业务逻辑层与数据访问层进行合并成"model"。
>
> MVC是一个大的概念,三层架构其实就是MVC的具体的实现的一种设计模式。


 src:

 index:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta  charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 通过c标签进行判断-->
	<c:if test="${empty ls}">
		<jsp:forward page="index.do"></jsp:forward>		
	</c:if>
	<h2 style="text-align: center">zking购物商城界面</h2>
	<hr />
	<c:if test="${empty user.username}">
	<p><a href="dl.jsp">登录</a></p>
	</c:if>
	<c:if test="${!empty user.username}">
	<p>欢迎您 大哥——${user.username}</p>
	</c:if>
	<table border="1" cellspacing="0" cellpadding="0" width="100%">
		<tr>
			<th>商品编号</th>
			<th>商品名称</th>
			<th>商品类型</th>
			<th>商品图片</th>
			<th>商品价格</th>
			<th>商品库存</th>
			<th>商品简介</th>
			<th>操作</th>
		</tr>
		<!--通过c标签遍历  -->
		<c:forEach items="${ls}" var="goods">
			<tr>
				<td>${goods.gid }</td>
				<td>${goods.gname }</td>
				<td>${goods.gtype }</td>
				<td><img src="${goods.gimage}" width="80" heigth="50"/></td>
				<td>${goods.gprice }</td>
				<td>${goods.gkc }</td>
				<td>${goods.ginfo }</td>
				<td><button onclick="addCart(${goods.gid})">加入购物车</button></td>
			</tr>
		</c:forEach>
	</table>
	
	
	
	<script type="text/javascript">
	//加入购物车的点击事件
	function addCart(gid) {
		window.location.href="addCart.do?gid="+gid;
	}
</script>
</body>
</html>

cart:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>我的购物车</h2>
	<hr />
	<c:if test="${empty listCarts}">
				在忙也要记得犒劳一下自己!!<a href="index.jsp">点我购物</a>
	</c:if>
	<c:if test="${!empty listCarts}">
		<table border="1" cellspacing="0" cellpadding="0" width="100%">
			<tr>
				<th>购物车编号</th>
				<th>商品名称</th>
				<th>商品图片</th>
				<th>商品单价</th>
				<th>商品库数量</th>
				<th>商品总价</th>
				<th>操作</th>
			</tr>
			<!--通过c标签遍历  -->
			<c:forEach items="${listCarts}" var="cart">
				<tr>
					<td>${cart.cid}</td>
					<td>${cart.goods.gname }</td>
					<td><img src="${cart.goods.gimage}" width="80" heigth="50" /></td>
					<td>${cart.goods.gprice }</td>
					<td>${cart.ccount}</td>
					<td>${cart.ctotal }</td>
					<td><a onclick="return confirm('确定要删除吗')" href="DeleteServlet.do?cid=${cart.cid}">删除</a>
						<button>修改</button></td>
				</tr>
			</c:forEach>
		</table>
		<P style="text-align: right">
			<button
				style="background: yellow; color: red; font-weight: bold; width: 100px; height: 50px; border-radius: 30px; cursor: pointer;"
				onclick="buy()">点我结算</button>
		</P>
	</c:if>
	<script type="text/javascript">
		function buy() {
 
			location.href = "FindCartInfoServlet";
 
		}
	</script>
</body>
</html>

确认订单:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta  charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>确认订单</h3>
	
	
	<h6>确认收货地址</h6>
	<input  id="oaddress" type="text" style="width:100%;height:40px;"/>
	<br/><br/><br/><br/>
	
	<hr/>
	
	
	<h6>确认订单信息</h6>
	<p>商品总件数:${sessionScope.maps.sumCount}</p>
	<h6>商品信息</h6>
	<c:forEach items="${sessionScope.maps.ls}" var="cart">
		<span>
			<span>${cart.goods.gname}</span>
			<img src="${cart.goods.gimage }" width="100px"  heigth="40px"/>
		</span>
	
	
	</c:forEach>
	<hr/>
	<p style="text-align: center">
		<h1> 总金额:${sessionScope.maps.sumPrice}</h1>
	</p>
	
	<p style="text-align: right">
		<button style="background: yellow;color:red;font-weight: bold;width:100px;height:50px;border-radius:30px; cursor: pointer;" onclick="confimOrder()">确认订单</button>
	</p>
	
	
<script type="text/javascript">
	function confimOrder() {
		var oaddress=document.getElementById("oaddress").value;
		if(!oaddress){
			alert("请输入地址在确认订单");
			return
		}
		location.href="ConfirmOrderServlet?oaddress="+oaddress;
	}
</script>
</body>
</html>

Servlet:

package com.zking.servlet;
 
import java.io.IOException;
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;
 
import com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBiz;
import com.zking.entity.Goods;
import com.zking.entity.User;
 
/**
 * Servlet implementation class GoodsListServlet
 */
@WebServlet("/index.do")
public class GoodsListServlet extends HttpServlet {
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		IGoodsBiz igb = new GoodsBiz();
		List<Goods> ls=igb.getAll();
		
		HttpSession session= request.getSession();
		session.setAttribute("ls", ls);
		String path=request.getServletContext().getContextPath();
		response.sendRedirect(path+"/index.jsp");
	}
 
}

servlet:

package com.zking.servlet;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
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;
 
import com.zking.biz.ICartBiz;
import com.zking.biz.impl.CartBizImpl;
import com.zking.entity.Cart;
import com.zking.entity.User;
 
@WebServlet("/FindCartInfoServlet")
public class FindCartInfoServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//加入购物车的servlet
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		
		HttpSession session= request.getSession();
		User user=(User) session.getAttribute("user");
		//直接获取数据库数据
		ICartBiz icb = new CartBizImpl();
		List<Cart> ls= icb.getCartByUsersid(user.getUserid());
		
		//获取总数量和总价格
		int sumCount=0;
		int sumPrice=0;
		for (Cart cart : ls) {
			sumCount+=cart.getCcount();
			sumPrice+=cart.getCtotal();
		}
		
		Map<String, Object> maps= new HashMap<String,Object>();
		maps.put("ls", ls);
		maps.put("sumCount", sumCount);
		maps.put("sumPrice", sumPrice);
		
		session.setAttribute("maps", maps);
		response.sendRedirect("confirmOrder.jsp");
	
	
	
	
	}
}

servlet:判断用户是否登录

package com.zking.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
 
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;
 
import com.zking.biz.IUserBiz;
import com.zking.biz.impl.UserBizimpl;
import com.zking.entity.User;
 
@WebServlet("/DlServLet.do")
public class DlServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charsert=utf-8");
		// 获取session域对象值
		HttpSession session = request.getSession();
		// 获取out
		PrintWriter out = response.getWriter();
		// 接收表单提交过来的值
		String name = request.getParameter("uname");// 拿到用户名
		String pwd = request.getParameter("pwd");// 用户密码
		// 调用biz层方法
		IUserBiz iub = new UserBizimpl();
		User y = iub.dl(name, pwd);
		// 判断
		if (y != null) {
			// 把该用户存进去
			session.setAttribute("user", y);
			// 登录成功跳转页面
			out.print("<script>alert('登录成功');location.href='index.jsp';</script>");
		} else {
			// 用户名密码错误
			out.print("<script>alert('用户名或密码有误');location.href='dl.jsp';</script>");
		}
	}
}

servlet:

package com.zking.servlet;
 
import java.io.IOException;
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;
 
import com.zking.biz.ICartBiz;
import com.zking.biz.impl.CartBizImpl;
import com.zking.entity.Cart;
import com.zking.entity.User;
 
@WebServlet("/DeleteServlet.do")
public class DeleteServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
		request.setCharacterEncoding("utf-8");
		//获得session
		HttpSession session = request.getSession();
		//接收jid
		String cid=request.getParameter("cid");
		
		//实例化biz层
		ICartBiz icb = new CartBizImpl();
		//调用方法
		int n =icb.delCartByGid(Integer.valueOf(cid));
		//userid
		User user= (User)session.getAttribute("user");
		List<Cart> listCarts= icb.getCartByUsersid(user.getUserid());
		session.setAttribute("listCarts", listCarts);
		response.sendRedirect("cart.jsp");
	}
}

servlet:

package com.zking.servlet;
 
import java.io.IOException;
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;
 
import com.zking.biz.ICartBiz;
import com.zking.biz.IOrderBiz;
import com.zking.biz.impl.CartBizImpl;
import com.zking.biz.impl.OrderBizimpl;
import com.zking.entity.Cart;
import com.zking.entity.Order;
import com.zking.entity.User;
 
@WebServlet("/ConfirmOrderServlet")
public class ConfirmOrderServlet extends HttpServlet {
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//加入购物车的servlet
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		String oaddress=request.getParameter("oaddress");
		
		//生成订单和订单详情
 
		HttpSession session= request.getSession();
		User user=(User) session.getAttribute("user");
		//直接获取数据库数据
		ICartBiz icb = new CartBizImpl();
		List<Cart> ls= icb.getCartByUsersid(user.getUserid());
		
		//获取总数量和总价格
		int sumCount=0;
		int sumPrice=0;
		for (Cart cart : ls) {
			sumCount+=cart.getCcount();
			sumPrice+=cart.getCtotal();
		}
		
		Order order= new Order(user, sumCount, sumPrice, oaddress, 0);
		
		//将当前用户的购物车集合进行set
		order.setLs(ls);
		//实例化Biz
		IOrderBiz iob = new OrderBizimpl();
		iob.addOrder(order);
	}
}

servlet:

package com.zking.servlet;
 
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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import com.zking.biz.ICartBiz;
import com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.CartBizImpl;
import com.zking.entity.Cart;
import com.zking.entity.Goods;
import com.zking.entity.User;
 
/**
 * Servlet implementation class AddCartServlet
 */
@WebServlet("/addCart.do")
public class AddCartServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//加入购物车的servlet
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//获取值
		//userid
		HttpSession session= request.getSession();
		User user= (User)session.getAttribute("user");
		System.out.println(user);
		if("null".equals(user)) {
			response.sendRedirect("dl.jsp");
		}
		String id=request.getParameter("gid");
		int gid=0;
		if(null!=id) {
			gid=Integer.valueOf(id);
		}
		Cart c = new Cart();
		IGoodsBiz igb = new com.zking.biz.impl.GoodsBiz();
		Goods goods=igb.getGoodsById(gid);
		c.setGoods(goods);
		c.setUsers(user);
		c.setCcount(1);
		c.setCtotal();
		ICartBiz icb = new CartBizImpl();
		List<Cart> listCarts= icb.getCartByUsersid(user.getUserid());
		boolean f = true;
		if(null==listCarts) {
			listCarts = new ArrayList<Cart>();
		}else {
			//遍历所有商品
			for (Cart cart : listCarts) {
				//判断
				if(cart.getGoods().getGid()==c.getGoods().getGid()) {
					cart.setCcount(cart.getCcount()+1);
					cart.setCtotal();
					//进行数据库更新
					icb.updateCartByCidAndUserid(cart);
					f=false;
					break;
				}
			}
		}
		//加入购物车不是加入集合而是加入数据库库
		if(f) {
			icb.addCart(c);
		}
		//listCarts.add(c);
		//加入后数据更新
		listCarts= icb.getCartByUsersid(user.getUserid());
		session.setAttribute("listCarts", listCarts);
		response.sendRedirect("cart.jsp");
	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值