estore电商网站项目

estore电商网站项目

项目背景:
电子商务的发展为网络购物的发展开拓了更广阔的市场。所以,我实现了这个项目,诣在模拟网络购物,从登陆,到页面浏览再到购物车结账的全过程。

使用技术和代码流程:
jsp+mybatis+servlet+mysql
jsp为这个项目的主要框架,实现了三层架构,在web层,使用servlet将网页与代码进行连接,在service层进行数据分析,需要的数据在dao层通过mybatis进行获取。

系统功能:
1、用户注册、登陆
2、查看商品列表
3、查看商品详细信息
4、添加商品购物车
5、查看,修改购物车
6、结算(生成订单)
7、取消订单
8、在线支付(添加收货信息)

核心代码:
web层响应给页面:

	//响应 注册成功了需要登陆-->返回登陆界面
	//    注册没成功--->还返回注册页面--->提示信息
	try {
		//注册成功
		service.register(c);
		session.setAttribute("msg", "注册成功,请登陆!");
		path="/WEB-INF/login.jsp";
	} catch (Exception e) {
		//将注册失败的原因传给前台
		session.setAttribute("msg", "注册失败:"+e.getMessage());
		//没注册成功
		path="/WEB-INF/register.jsp";
		System.out.println(e.getMessage());
	}
	req.getRequestDispatcher(path).forward(req, resp);

完成登陆逻辑处理:

	//判断字符串是否为空
	if(StringUtils.isBlank(username)||StringUtils.isBlank(password)) {
		throw new Exception("用户名和密码为空");
	}
	//dao层完成查找用户名是否存在
	SqlSession sqlSession = MybatisSqlSessionFactoryUtil.openSession();
	CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
	Customer customer = mapper.findCustomerByName(username);
	
	//用户名不存在  用户名不正确
	if(customer==null) {
		throw new Exception("用户名不正确");
	}
	//用户名正确
	if(customer!=null) {
		if(!customer.getPassword().equals(password)) {
			throw new Exception("密码不正确");
		}
	}
	return customer;

加入购物车操作:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, 	IOException {
	//接受来自于前台的参数--->id  num
	Integer id = Integer.getInteger(request.getParameter("id"));
	Integer num = Integer.getInteger(request.getParameter("num"));
	System.out.println("--------------------------id"+id);
	//调用service去根据id查找书的信息----->book
	IBookService service = new BookServiceImpl();
	Book book = service.findBookById(id);
	//有了book的信息  有了num-->orderline
	OrderLine orderline = new OrderLine();
	orderline.setNum(num);
	orderline.setBook(book);
	//得到shopCar购物车对象--->一个用户只有一个购物车----->
	//在用户登录的时候将购物车对象创建出来存储在session中
	//----->orderline(orderline  num)
	
	//将购物车取出来使用---->之前存放在注册的时候
	HttpSession session = request.getSession();
	ShopCar car = (ShopCar)session.getAttribute("car");
	//判空操作
	if(car==null) {
		car = new ShopCar();
		session.setAttribute("car", car);
	}
	//将数据存储在购物车中
	car.addShopCar(orderline, num);
	//响应页面--->shopCart.jsp---->将添加到购物车的orderline进行展示---->getOrderlines--->${orderlines}---->map(遍历取值)
	request.getRequestDispatcher("/WEB-INF/shopCart.jsp").forward(request, response);
}

在数据库中进行查找:

<mapper namespace="com.briup.mapper.CustomerMapper">
<!-- 根据name查找customer -->
<select id="findCustomerByName" parameterType="String" resultType="customer">
	select * from es_customer where name = #{name}
</select>	

<!-- 完成插入用户功能 -->
<insert id="insertCustomer" parameterType="customer" useGeneratedKeys="true" keyProperty="id">
	insert into es_customer(name,password,zipCode,address,telephone,email)
	values(#{name},#{password},#{zipCode},#{address},#{telephone},#{email})
</insert>

<!-- 根据id查找用户所对应的收货地址 -->
<select id="findAddById" parameterType="Integer" resultType="shopAddress">
	select * from es_shopaddress where customer_id = #{id}
</select>

项目总结:
通过三层架构技术,使得此项目拥有动态交互效果,实时数据的在线共享和高效的数据检索等特点,可以高度还原购物网站的底层实现逻辑。

Guess you like

Origin blog.csdn.net/weixin_44168948/article/details/107251790