JavaWeb 优化购物车项目JSTL版&分页

这篇博客介绍了如何使用JavaWeb进行购物车项目的优化,包括JSTL版本的实现和分页功能。文章详细讲解了从`index.jsp`首页代码到`car.jsp`购物车界面的优化过程,涉及到`IGoodsBiz`、`GoodsBizImpl`、`IGoodsDao`和`GoodsDaoImpl`等关键接口和实现类的使用。通过这个项目,读者可以学习到如何在实际开发中提高购物车的用户体验和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

购物车原版

购物车原版1https://blog.youkuaiyun.com/weixin_62270300/article/details/124159838?spm=1001.2014.3001.5501购物车原版1.2https://blog.youkuaiyun.com/weixin_62270300/article/details/124181907?spm=1001.2014.3001.5501

目录

index.jsp(首页代码) 

doIndex.jsp(处理主页的代码)

 IGoodsBiz.java(商品逻辑接口)

GoodsBizImpl.java(商品逻辑接口实现类)

 IGoodsDao.java(商品数据访问接口)

  GoodsDaoImpl.java(商品数据访问接口实现类)

car.jsp(购物车界面优化)

 


index.jsp(首页代码) 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pmC5a6c,size_20,color_FFFFFF,t_70,g_se,x_16

<%@page import="com.zking.pojo.Goods"%>
<%@page import="com.zking.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.biz.IGoodsBiz"%>
<%@page import="com.zking.pojo.User"%>
<%@ 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 lang="zh">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
  <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
  <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
  <style>

    td:nth-child(3)::before{
      content: "$";
    }

  </style>
</head>

<body>

<c:if test="${user==null}">
     <c:redirect url="login.jsp"></c:redirect>
</c:if>
<c:if test="${goods==null }">
     <c:redirect url="doIndex.jsp"></c:redirect>
</c:if>
    <div class="jumbotron">
        <div class="container">
            <h1>欢迎光临苡桉SuperMarket</h1>
            <p>尊贵的${user.account}</p>
            <a class="btn btn-primary" href="car.jsp">🛒</a>
        </div>
    </div>
   <div class="container">
    <table class="table">
        <tr>
            <th>商品序号</th>
            <th>商品名称</th>
            <th>商品单价</th>
            <th>商品描述</th>
            <th>操作</th>
        </tr>
       
       <c:forEach items="${goods}" var="g">
        <tr>
            <td>${g.id}</td>
            <td>${g.name}</td>
            <td>${g.price}</td>
            <td>${g.info}</td>
            <td>
               <div class="btn-group btn-group-xs">
                    <a href="doAddCar.jsp?id=${g.id}" class="btn btn-primary">添加购物车</a>
                 </div>
            </td>
        </tr>
       </c:forEach>
    </table>
    <div style="text-align:center">
     <ul class="pagination">
    <li>
      <a href="doIndex.jsp?ipage=${Math.max(ipage-1,1)}">
        <span aria-hidden="true">&laquo;</span>
      </a>
    </li>
    
   <c:forEach begin="1" end="${maxPage }" var="i">
   <li class="${ipage==i?"active":""}"><a href="doIndex.jsp?ipage=${i}">${i}</a></li>
   </c:forEach>
    <li>
      <a href="doIndex.jsp?ipage=${ipage+1}" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
      </a>
    </li>
  </ul>
    </div>
    </div>
</body>
</html>

doIndex.jsp(处理主页的代码)

<%@page import="com.zking.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.biz.IGoodsBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
     String parameter=request.getParameter("ipage");
     int ipage=1;//默认第一页
     if(parameter!=null){
    	 ipage=Integer.parseInt(parameter);
     }
     //得到商品的biz
     IGoodsBiz goodsBiz=new GoodsBizImpl();
     //将商品查询出来 并且放到请求域当中
     request.setAttribute("goods", goodsBiz.getAll(ipage));
     //算出页数 带到index.jsp
     int row=goodsBiz.getRowCount();
     request.setAttribute("maxPage", (int)Math.ceil(row*1.0/4));
     request.setAttribute("ipage", ipage);
     //希望他能把数据携带到index.jsp
     request.getRequestDispatcher("index.jsp").forward(request, response);
     
     
%>

 IGoodsBiz.java(商品逻辑接口)

public interface IGoodsBiz {
     List<Goods>getAll(int page);
  
	 //查询单个
	 Goods getOne(Integer id);
 
	  //查询所有数量
	 int getRowCount();
}

GoodsBizImpl.java(商品逻辑接口实现类)

public class GoodsBizImpl implements IGoodsBiz {

	private IGoodsDao goodsDao=new GoodsDaoImpl();
	
	@Override
	public List<Goods> getAll(int page) {
		return goodsDao.getAll(page); 
	}
   
	@Override
	public Goods getOne(Integer id) {
		return goodsDao.getOne(id);
	}
	
	@Override
	public int getRowCount() {
		return goodsDao.getRowCount();
	}
	}

 IGoodsDao.java(商品数据访问接口)

public interface IGoodsDao {

	//查询所有
	 List<Goods>getAll(int page);
	 
	 //查询单个
	 Goods getOne(Integer id);

	//查询页数
	 int getRowCount();

}

  GoodsDaoImpl.java(商品数据访问接口实现类)

public class GoodsDaoImpl implements IGoodsDao{

	
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	/**
	 * 查询全部商品
	 */
	@Override
	public List<Goods> getAll(int page) {
		int size=4;
		int begin=(page-1)*size+1;
		int end=page*size;
		List<Goods>list=new ArrayList<Goods>();
		try {
			  con=DBHelper.getCon();
			  ps=con.prepareStatement("select*from(select a.*,rownum myr from shop_goods a)b where myr between ? and ?");
			  ps.setInt(1, begin);
			  ps.setInt(2, end);
			  rs=ps.executeQuery();
			  while(rs.next()) {
				  Goods goods=new Goods();
				  goods.setId(rs.getInt(1));
				  goods.setName(rs.getString(2));
				  goods.setPrice(rs.getInt(3));
				  goods.setInfo(rs.getString(4));
	              list.add(goods);
			   }
			  return list;
			} catch (Exception e) {
	          e.printStackTrace();
			}finally {
				DBHelper.close(con, ps, rs);
			}
		return list;
	}

	/**
	 * 根据id查询商品
	 */
	@Override
	public Goods getOne(Integer id) {

		try {
			  con=DBHelper.getCon();
			  ps=con.prepareStatement("select * from shop_goods where id=? ");
			 ps.setInt(1, id);
			  rs=ps.executeQuery();
			  if(rs.next()) {
				  Goods goods=new Goods();
				  goods.setId(rs.getInt(1));
				  goods.setName(rs.getString(2));
				  goods.setPrice(rs.getInt(3));
				  goods.setInfo(rs.getString(4));
			      return goods; 
			  }
			 
			} catch (Exception e) {
	          e.printStackTrace();
			}finally {
				DBHelper.close(con, ps, rs);
			}
		return null;
	}
	
   /**
    * 查询页数的方法
    */
    public int getRowCount() {

		try {
			  con=DBHelper.getCon();
			  ps=con.prepareStatement("select count(1) from shop_goods ");
			  rs=ps.executeQuery();
			  if(rs.next()) {
				return rs.getInt(1);
			  }
			 
			} catch (Exception e) {
	          e.printStackTrace();
			}finally {
				DBHelper.close(con, ps, rs);
			}
		return 0;
    }
	
	
}

car.jsp(购物车界面优化)

<%@page import="com.zking.vo.CarItem"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.pojo.User"%>
<%@ 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 lang="zh">

<head>
<meta charset="UTF-8">
<title>Document</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css">
<script src="bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
<script src="bootstrap-3.3.7-dist/js/bootstrap.js"></script>
<style>
td:nth-child(4)::before, small {
	content: "$";
}

* {
	outline: none !important;
}

td, th {
	text-align: center;
}

input {
	text-align: center;
}
</style>
</head>
<c:if test="${user==null}">
     <c:redirect url="login.jsp"></c:redirect>
</c:if>

<body>
	<div class="jumbotron">
		<div class="container">
			<h1>欢迎光临购物车🛒</h1>
			<p>尊贵的${user.account }</p>
		    <p>
		       <a href="doExit.jsp" class="btn btn-warning">退出登录</a>
		    </p>
		</div>
	</div>
<div class="container">
	<table class="table">
		<tr>
			<th>商品序号</th>
			<th>商品名称</th>
			<th>商品个数</th>
			<th>商品总价</th>
			<th>操作</th>
		</tr>
		<c:forEach items="${car}" var="c">
		<tr>
			<td style="line-height: 30.5px;">${c.goods.id}</td>
			<td style="line-height: 30.5px;">${c.goods.name}</td>
			<td>
				<div class="input-group" style="width: 120px; margin: auto;">
					<span class="input-group-btn">
						<a href="doUpdCar.jsp?id=${c.goods.id }&type=0" class="btn btn-default" type="button">-</a>
					</span> <input type="number" onblur="location.href='doUpdCar.jsp?id=${c.goods.id }&count='+this.value" value="${c.count }"  class="form-control"> <span
						class="input-group-btn">
						<a href="doUpdCar.jsp?id=${c.goods.id }&type=1" class="btn btn-default" type="button">+</a>
					</span>
				</div>
			</td>
			<td style="line-height: 30.5px;">${c.sum}</td>
			<td style="line-height: 30.5px;">
				<a href="doDelCar.jsp?id=${c.goods.id }" class="btn btn-primary">删除</a>
			</td>
		</tr>
       </c:forEach>

	</table>
    
    </div>
	<h1 class="alert alert-info">
		<%-- 当前购物车总价 <small><%=sum %></small> --%>
		<a href="doClear.jsp" class="btn btn-danger">点我结算</a>
	</h1>
</body>
</html>

 今天的分享就到这里结束啦!!✌

以上就是关于JavaWeb 优化购物车项目JSTL版&分页的一些内容!!📖

期待下次再见!!😊

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值