展示所有商品

展示所有商品

需求:
    点击首页上的超链接,在页面上展示所有的商品信息

步骤分析:
    1.数据库和表

        create database web2;
        use web2;
        create table `product` (
            `pid` varchar (96),
            `pname` varchar (150),
            `market_price` double ,
            `shop_price` double ,
            `pimage` varchar (600),
            `pdate` date ,
            `pdesc` varchar (765)
        );
        INSERT INTO `product` VALUES('1','小米 4c 标准版','1399','1299','products/1/c_0001.jpg','2015-11-02','小米 4c 标准版 全网通 白色 移动联通电信4G手机 双卡双待');
        INSERT INTO `product` VALUES('10','华为 Ascend Mate7','2699','2599','products/1/c_0010.jpg','2015-11-02','华为 Ascend Mate7 月光银 移动4G手机 双卡双待双通6英寸高清大屏,纤薄机身,智能超八核,按压式指纹识别!!选择下方“移动老用户4G飞享合约”,无需换号,还有话费每月返还!');
        INSERT INTO `product`  VALUES('11','vivo X5Pro','2399','2298','products/1/c_0014.jpg','2015-11-02','移动联通双4G手机 3G运存版 极光白【购机送蓝牙耳机+蓝牙自拍杆】新升级3G运行内存·双2.5D弧面玻璃·眼球识别技术');
        INSERT INTO `product`  VALUES('12','努比亚(nubia)My 布拉格','1899','1799','products/1/c_0013.jpg','2015-11-02','努比亚(nubia)My 布拉格 银白 移动联通4G手机 双卡双待【嗨11,下单立减100】金属机身,快速充电!布拉格相机全新体验!');
        INSERT INTO `product`  VALUES('13','华为 麦芒4','2599','2499','products/1/c_0012.jpg','2015-11-02','华为 麦芒4 晨曦金 全网通版4G手机 双卡双待金属机身 2.5D弧面屏 指纹解锁 光学防抖');
        INSERT INTO `product`  VALUES('14','vivo X5M','1899','1799','products/1/c_0011.jpg','2015-11-02','vivo X5M 移动4G手机 双卡双待 香槟金【购机送蓝牙耳机+蓝牙自拍杆】5.0英寸大屏显示·八核双卡双待·Hi-Fi移动KTV');
        INSERT INTO `product`  VALUES('15','Apple iPhone 6 (A1586)','4399','4288','products/1/c_0015.jpg','2015-11-02','Apple iPhone 6 (A1586) 16GB 金色 移动联通电信4G手机长期省才是真的省!点击购机送费版,月月送话费,月月享优惠,畅享4G网络,就在联通4G!');

    2.新建一个项目
    3.导入jar包

        驱动 dbutils c3p0 jstl beanutils

    4.包结构

        utils工具类:datasourceutils
        导入c3p0配置文件

    5.新建一个首页index.jsp    

        添加一个超链接

    6.点击超链接 发送一个servlet上(FindAllServlet)
    7.FindAllServlet:

        调用service,查询所有的商品 返回值:list

        将list放入request域中,请求转发 prodouct_list.jsp

   8、将内容所需图片放入项目中
代码:

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2><a href="${pageContext.request.contextPath }/findAll">展示所有商品</a></h2>
</body>

</html>

-------------------------------------------------------------------------------

FindAllServlet:

package com.feizhu.web.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.feizhu.domain.Product;
import com.feizhu.service.ProductService;

/**
 * 展示所有商品
 */
public class FindAllServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //调用service 查询所有商品  返回值list
        List<Product> plist = null;
        try {
            plist = new ProductService().findAll();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        //将list放入request域中
        request.setAttribute("list", plist);
        
        //请求转发
        request.getRequestDispatcher("/product_list.jsp").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }

}

----------------------------------------------------------------------

ProductService:

package com.feizhu.service;

import java.sql.SQLException;
import java.util.List;

import com.feizhu.dao.ProductDao;
import com.feizhu.domain.Product;

public class ProductService {
    
    /**
     * 查询所有商品
     * @return  list集合
     * @throws SQLException
     */
    public List<Product> findAll() throws SQLException {
        
        return   new ProductDao().findAll();
    }

}

----------------------------------------------------------------------------------

Product:

package com.feizhu.domain;


import java.util.Date;

public class Product {

    /**
     * `pid` varchar (96),
            `pname` varchar (150),
            `market_price` double ,
            `shop_price` double ,
            `pimage` varchar (600),
            `pdate` date ,
            `pdesc` varchar (765)
     */
    private String pid;
    private String pname;
    private Double market_price;
    
    private Double shop_price;
    private String pimage;
    private Date pdate;
    private String pdesc;
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public Double getMarket_price() {
        return market_price;
    }
    public void setMarket_price(Double market_price) {
        this.market_price = market_price;
    }
    public Double getShop_price() {
        return shop_price;
    }
    public void setShop_price(Double shop_price) {
        this.shop_price = shop_price;
    }
    public String getPimage() {
        return pimage;
    }
    public void setPimage(String pimage) {
        this.pimage = pimage;
    }
    public Date getPdate() {
        return pdate;
    }
    public void setPdate(Date pdate) {
        this.pdate = pdate;
    }
    public String getPdesc() {
        return pdesc;
    }
    public void setPdesc(String pdesc) {
        this.pdesc = pdesc;
    }
    

}

----------------------------------------------------------------------------

ProductDao:

package com.feizhu.dao;


import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.feizhu.domain.Product;
import com.feizhu.utils.DataSourceUtils;

public class ProductDao {

    /**
     * 查询所有商品
     *
     * @return
     * @throws SQLException
     */
    public List<Product> findAll() throws SQLException {
        
        QueryRunner qr= new QueryRunner(DataSourceUtils.getDataSource());
        String sql="select * from product";
        return qr.query(sql, new BeanListHandler<>(Product.class));
    }

}

----------------------------------------------------------------------------

工具类:

package com.feizhu.utils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSourceUtils {
      
      private static ComboPooledDataSource ds=new ComboPooledDataSource();
      
      private static ThreadLocal<Connection> tl=new ThreadLocal<>();
      /**
       *获取数据源
       * @return 连接
       */
       public  static DataSource getDataSource() {
           return ds;
       }
      /**
       * 从 当前线程上获取连接
       * @return
       * @throws SQLException
       */
       public static Connection getConnection() throws SQLException {
           Connection conn=tl.get();
           
           if(conn==null) {
               //第一次获取  创建一个连接和当前的线程绑定
               conn=ds.getConnection();
               
               //绑定
               tl.set(conn);
           }
           return conn;
       }
       
       /**
        * 释放连接
        * @param conn 连接
        */
       
       public static void closeConn(Connection conn) {
           if(conn!=null) {
               try {
                conn.close();
                //和当前的线程解绑
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
               conn=null;
           }
       }
       
       /**
        *释放语句执行者
        * @param st 执行者
        */
       public static void closeStatement(PreparedStatement st) {
           if(st!=null) {
               try {
                st.close();
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
              st=null;
           }
       }
       
       
       /**
        *释放结果集
        * @param rs 结果集
        */
       public static void closeResultSet(ResultSet rs) {
           if(rs!=null) {
               try {
                   rs.close();
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
               rs=null;
           }
       }
       
       /**
        *
        * @param conn
        * @param st
        * @param rs
        */
       public static void closeRouse(Connection conn,PreparedStatement st,ResultSet rs) {
           closeRouse(st,rs);
           closeConn(conn);
       }
       
       public static void closeRouse(PreparedStatement st,ResultSet rs) {
           closeResultSet(rs);
           closeStatement(st);
       }
       
       /**
        * 开启事物
        * @throws SQLException
        */
       public static void  startTransaction() throws SQLException {
           //获取连接//开启事物
           getConnection().setAutoCommit(false);
       }
       
       //事物提交
       public static void commitAndClose() {
            //获取连接
            try {
                Connection conn=getConnection();
           //提交事物
                conn.commit();
           //释放资源
                conn.close();  
           //解除绑定
                tl.remove();
            } catch (SQLException e) {
                
                e.printStackTrace();
            }

       }
       
       /**
        * 事物回滚
        * @throws SQLException
        */
       
       //事物提交
       public static void rollbackAndClose() {
            //获取连接
            try {
                Connection conn=getConnection();
           //事物回滚
                conn.rollback();
           //释放资源
                conn.close();  
           //解除绑定
                tl.remove();
            } catch (SQLException e) {
                
                e.printStackTrace();
            }

       }
}

-----------------------------------------------------------------------

product_list.jsp:

<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <table border="1" align="center" width="88%">
        <tr>
            <th>pid</th>
            <th>商品图片</th>
            <th>商品名称</th>
            <th>市场价</th>
            <th>商场价</th>
            <th>商品描述</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${list }" var="p">
            <tr>
                <td width="8%">${p.pid }</td>
                <td width="8%"><img alt="" src="${pageContext.request.contextPath}/${ p.pimage}" width="80"></td>
                <td width="8%">${p.pname }</td>
                <td width="8%">${p.market_price }</td>
                <td width="8%">${p.shop_price }</td>
                <td >${p.pdesc }</td>
                <td width="8%">
                    修改|删除
                </td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

-----------------------------------效果展示-------------------------------------



猜你喜欢

转载自blog.csdn.net/My_____Dream/article/details/79942725