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