• 案例22-显示商品的详细信息


    1 product_list.jsp代码修改

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>会员登录</title>
    <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
    <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
    <script src="js/bootstrap.min.js" type="text/javascript"></script>
    <!-- 引入自定义css文件 style.css -->
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    
    <style>
    body {
        margin-top: 20px;
        margin: 0 auto;
        width: 100%;
    }
    
    .carousel-inner .item img {
        width: 100%;
        height: 300px;
    }
    </style>
    </head>
    
    <body>
    
    
        <!-- 引入header.jsp -->
        <jsp:include page="/header.jsp"></jsp:include>
    
    
        <div class="row" style=" 1210px; margin: 0 auto;">
            <div class="col-md-12">
                <ol class="breadcrumb">
                    <li><a href="#">首页</a></li>
                </ol>
            </div>
            <c:forEach items="${pageBean.list }" var="product">
                <div class="col-md-2" style="height: 250px">
                    <a href="${pageContext.request.contextPath }/productInfo?pid=${product.pid}"> <img src="${pageContext.request.contextPath }/${product.pimage}"
                        width="170" height="170" style="display: inline-block;">
                    </a>
                    <p>
                        <a href="${pageContext.request.contextPath }/productInfo?pid=${product.pid}" style='color: green'>${product.pname }</a>
                    </p>
                    <p>
                        <font color="#FF0000">商城价:&yen;${product.shop_price }</font>
                    </p>
                </div>
            </c:forEach>
        </div>
    
        <!--分页 -->
        <div style=" 380px; margin: 0 auto; margin-top: 50px;">
            <ul class="pagination" style="text-align: center; margin-top: 10px;">
                
                        
                
                <!-- 2 上一页 -->
                    <!--判断当前页是否是第一页  -->
                <c:if test="${pageBean.currentPage==1 }">
                    <li class="disabled">
                        <a href="javascript:void(0);" aria-label="Previous">
                            <span aria-hidden="true">&laquo;</span>
                        </a>
                    </li>
                </c:if>
                <c:if test="${pageBean.currentPage!=1 }">
                    <li>
                        <a href="${pageContext.request.contextPath }/productListByCid?cid=${cid}&currentPage=${pageBean.currentPage-1 }" aria-label="Previous">
                            <span aria-hidden="true">&laquo;</span>
                        </a>
                    </li>
                </c:if>
                
                
                
                
                <!-- 1 显示每一页 -->        
                <c:forEach begin="1" end="${pageBean.totalPage }" var="page">
                    <!-- 判断是否是当前页 -->
                    <c:if test="${page==pageBean.currentPage }">
                        <li class="active"><a href="javascript:void(0);">${page }</a></li>
                    </c:if> 
                    <c:if test="${page!=pageBean.currentPage }">
                        <li><a href="${pageContext.request.contextPath }/productListByCid?cid=${cid}&currentPage=${page }">${page }</a></li>
                    </c:if>
                </c:forEach>
                
                
                
                <!-- 3 下一页 -->
                    <!--判断当前页是否是第一页  -->
                <c:if test="${pageBean.currentPage==pageBean.totalPage }">
                    <li class="disabled">
                        <a href="javascript:void(0);" aria-label="Next">
                            <span aria-hidden="true">&raquo;</span>
                        </a>
                    </li>
                </c:if>
                <c:if test="${pageBean.currentPage!=pageBean.totalPage }">
                    <li>
                        <a href="${pageContext.request.contextPath }/productListByCid?cid=${cid}&currentPage=${pageBean.currentPage+1 }" aria-label="Next">
                            <span aria-hidden="true">&raquo;</span>
                        </a>
                    </li>
                </c:if>
    
                
            </ul>
        </div>
        <!-- 分页结束 -->
    
        <!--商品浏览记录-->
        <div
            style=" 1210px; margin: 0 auto; padding: 0 9px; border: 1px solid #ddd; border-top: 2px solid #999; height: 246px;">
    
            <h4 style=" 50%; float: left; font: 14px/30px 微软雅黑">浏览记录</h4>
            <div style=" 50%; float: right; text-align: right;">
                <a href="">more</a>
            </div>
            <div style="clear: both;"></div>
    
            <div style="overflow: hidden;">
    
                <ul style="list-style: none;">
                    <li
                        style=" 150px; height: 216; float: left; margin: 0 8px 0 0; padding: 0 18px 15px; text-align: center;"><img
                        src="products/1/cs10001.jpg" width="130px" height="130px" /></li>
                </ul>
    
            </div>
        </div>
    
    
        <!-- 引入footer.jsp -->
        <jsp:include page="/footer.jsp"></jsp:include>
    
    </body>
    
    </html>

    2 web层

    package www.test.web.servlet;
    
    import java.io.IOException;
    import java.sql.SQLException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import www.test.domain.Product;
    import www.test.service.ProductService;
    
    public class ProductInfoServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            //获取pid
            String pid =request.getParameter("pid");
            
            //传递给service层并调取service层的方法
            ProductService service = new ProductService();
            Product product = null;
            try {
                product = service.findProductByPid(pid);
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
            
            
            //存储到request域中
            request.setAttribute("product", product);
              //转发
            request.getRequestDispatcher("/product_info.jsp").forward(request, response);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }

    3 service层

    package www.test.service;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import www.test.dao.ProductDao;
    import www.test.domain.Category;
    import www.test.domain.Product;
    import www.test.vo.PageBean;
    
    public class ProductService {
    
        // 获取热门商品
        public List<Product> findHotProductList() throws SQLException {
    
            ProductDao dao = new ProductDao();
            return dao.findHotProductList();
        }
    
        // 获取最新商品商品
        public List<Product> findNewProductList() throws SQLException {
    
            ProductDao dao = new ProductDao();
            return dao.findNewProductList();
        }
    
        //获取商品分类
        public List<Category> findAllCategory() throws SQLException {
            ProductDao dao = new ProductDao();
            List<Category> categoryList = dao.findAllCategory();
            return categoryList;
        }
    
        //封装一个pageBean并返回给web层
        public PageBean<Product> findProductListByCid(String cid,int currentPage ,int currentCount) {
            
            ProductDao dao = new ProductDao();
            
            //封装一个pageBean并返回给web层
            PageBean<Product> pageBean = new PageBean<Product>();
            // 1 封装当前页
            pageBean.setCurrentPage(currentPage);
            
            //2 封装每页显示的条数
            pageBean.setCurrentCount(currentCount);
            
            //3 封装总条数
            int totalCount = 0;
            try {
                totalCount = dao.getTotalCount(cid);
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
            pageBean.setTotalCount(totalCount);
            
            //4 封装总页数
            int totalPage = (int) Math.ceil(1.0*totalCount/currentCount);
            pageBean.setTotalPage(totalPage);
            
            //5 当前页显示的数据
            //select * from product where cid =? limit ?,?;
            //当前页与起始页面的关系
            List<Product> list = null;
            int index = (currentPage-1)*currentCount;
            try {
                list = dao.findProductListByPage(cid,index,currentCount);
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
            pageBean.setList(list);
            
            
            return pageBean;
        }
    
        
        //根据pid查询商品
        public Product findProductByPid(String pid) throws SQLException {
            ProductDao dao = new ProductDao();
            Product product = dao.findProductByPid(pid);
            return product;
        }
    
    }

    4 dao层

    package www.test.dao;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.commons.dbutils.handlers.ScalarHandler;
    
    import www.test.domain.Category;
    import www.test.domain.Product;
    import www.test.utils.C3P0Utils;
    
    public class ProductDao {
    
        //获取热门商品
        public List<Product> findHotProductList() throws SQLException {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select * from product where is_hot=? limit ?,?";
            List<Product> hotProductList = qr.query(sql, new BeanListHandler<Product>(Product.class), 1,0,9);
            return hotProductList;
        }
        
        //获取最新商品
        public List<Product> findNewProductList() throws SQLException {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select * from product order by pdate desc limit ?,?";
            List<Product> newProductList = qr.query(sql, new BeanListHandler<Product>(Product.class), 0,9);
            return newProductList;
        }
    
        //获取商品分类
        public List<Category> findAllCategory() throws SQLException {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select * from category";
            List<Category> categoryList = qr.query(sql, new BeanListHandler<Category>(Category.class));
            return categoryList;
        }
    
        //获取商品的总条数
        public int getTotalCount(String cid) throws SQLException {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select count(*) from product where cid =?";
            Long totalCount = (Long) qr.query(sql, new ScalarHandler(),cid);
            return totalCount.intValue();
        }
    
        //获取分页显示的商品
        public List<Product> findProductListByPage(String cid, int index, int currentCount) throws SQLException {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select * from product where cid=? limit ?,?";
            List<Product> list = qr.query(sql, new BeanListHandler<Product>(Product.class), cid,index,currentCount);
            return list;
        }
    
        //根据pid查询商品
        public Product findProductByPid(String pid) throws SQLException {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select * from product where pid=?";
            return qr.query(sql, new BeanHandler<Product>(Product.class), pid);
        }
    
    }

    5 product_info.jsp代码

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>会员登录</title>
    <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
    <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
    <script src="js/bootstrap.min.js" type="text/javascript"></script>
    <!-- 引入自定义css文件 style.css -->
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    
    <style>
    body {
        margin-top: 20px;
        margin: 0 auto;
    }
    
    .carousel-inner .item img {
        width: 100%;
        height: 300px;
    }
    </style>
    </head>
    
    <body>
        <!-- 引入header.jsp -->
        <jsp:include page="/header.jsp"></jsp:include>
    
        <div class="container">
            <div class="row">
                <div
                    style="border: 1px solid #e4e4e4;  930px; margin-bottom: 10px; margin: 0 auto; padding: 10px; margin-bottom: 10px;">
                    <a href="./index.htm">首页&nbsp;&nbsp;&gt;</a> <a href="./蔬菜分类.htm">蔬菜&nbsp;&nbsp;&gt;</a>
                    <a>无公害蔬菜</a>
                </div>
    
                <div style="margin: 0 auto;  950px;">
                    <div class="col-md-6">
                        <img style="opacity: 1;  400px; height: 350px;" title=""
                            class="medium"
                            src="${pageContext.request.contextPath }/${product.pimage}">
                    </div>
    
                    <div class="col-md-6">
                        <div>
                            <strong>${product.pname }</strong>
                        </div>
                        <div
                            style="border-bottom: 1px dotted #dddddd;  350px; margin: 10px 0 10px 0;">
                            <div>编号:${product.pid }</div>
                        </div>
    
                        <div style="margin: 10px 0 10px 0;">
                            亿家价: <strong style="color: #ef0101;">¥:${product.shop_price }元/份</strong> 参 考 价:
                            <del>${product.market_price }元/份</del>
                        </div>
    
                        <div style="margin: 10px 0 10px 0;">
                            促销: <a target="_blank" title="限时抢购 (2014-07-30 ~ 2015-01-01)"
                                style="background-color: #f07373;">限时抢购</a>
                        </div>
    
                        <div
                            style="padding: 10px; border: 1px solid #e7dbb1;  330px; margin: 15px 0 10px 0;; background-color: #fffee6;">
                            <div style="margin: 5px 0 10px 0;">白色</div>
    
                            <div
                                style="border-bottom: 1px solid #faeac7; margin-top: 20px; padding-left: 10px;">
                                购买数量: <input id="quantity" name="quantity" value="1"
                                    maxlength="4" size="10" type="text">
                            </div>
    
                            <div style="margin: 20px 0 10px 0;; text-align: center;">
                                <a href="cart.htm"> <input
                                    style="background: url('./images/product.gif') no-repeat scroll 0 -600px rgba(0, 0, 0, 0); height: 36px;  127px;"
                                    value="加入购物车" type="button">
                                </a> &nbsp;收藏商品
                            </div>
                        </div>
                    </div>
                </div>
                <div class="clear"></div>
                <div style=" 950px; margin: 0 auto;">
                    <div
                        style="background-color: #d3d3d3;  930px; padding: 10px 10px; margin: 10px 0 10px 0;">
                        <strong>商品介绍</strong>
                    </div>
    
                    <div>
                        <img
                            src="${pageContext.request.contextPath }/${product.pimage}">
                    </div>
    
                    <div
                        style="background-color: #d3d3d3;  930px; padding: 10px 10px; margin: 10px 0 10px 0;">
                        <strong>商品参数</strong>
                    </div>
                    <div style="margin-top: 10px;  900px;">
                        <table class="table table-bordered">
                            <tbody>
                                <tr class="active">
                                    <th colspan="2">基本参数</th>
                                </tr>
                                <tr>
                                    <th width="10%">级别</th>
                                    <td width="30%">标准</td>
                                </tr>
                                <tr>
                                    <th width="10%">标重</th>
                                    <td>500</td>
                                </tr>
                                <tr>
                                    <th width="10%">浮动</th>
                                    <td>200</td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
    
                    <div style="background-color: #d3d3d3;  900px;">
                        <table class="table table-bordered">
                            <tbody>
                                <tr class="active">
                                    <th><strong>商品评论</strong></th>
                                </tr>
                                <tr class="warning">
                                    <th>暂无商品评论信息 <a>[发表商品评论]</a></th>
                                </tr>
                            </tbody>
                        </table>
                    </div>
    
                    <div style="background-color: #d3d3d3;  900px;">
                        <table class="table table-bordered">
                            <tbody>
                                <tr class="active">
                                    <th><strong>商品咨询</strong></th>
                                </tr>
                                <tr class="warning">
                                    <th>暂无商品咨询信息 <a>[发表商品咨询]</a></th>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
    
            </div>
        </div>
    
    
        <!-- 引入footer.jsp -->
        <jsp:include page="/footer.jsp"></jsp:include>
    
    </body>
    
    </html>
  • 相关阅读:
    装备购买 线性基+贪心
    花园 状压DP+矩阵快速幂
    数学作业 递推+矩阵快速幂
    石头游戏 构造+矩阵快速幂
    sumdiv 算术基本定理的推论
    huffman
    Integer 类型比较大小
    java 中的 String 相加
    Java 中的 static 关键字
    JAVA 基础
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8445157.html
Copyright © 2020-2023  润新知