一.目的
在jsp页面中显示手机商品的信息。
二.思想步骤
2.1收集手机图片信息,价格信息,手机名信息等。
2.2 创建mysql数据库,新建表,将信息存入表中。
2.4 创建三个类(DataSourceUtils,product,product_servlet)
2.4.1 DataSourceUtils数据库连接池
2.4.2 product 存储获取到商品信息
2.4.3 product_servlet 连接数据库,获取信息,并将product对象存在List集合中,再将集合设置在requset域中,转发到jsp页面。
2.5 创建jsp页面 ,获取request域中的List集合,遍历集合,通过jsp脚本代码将信息显示在页面上。
三.实际步骤
3.1 mysql数据
3.1.1 创建数据库 ,数据库名:product,创建新表,表名:message.
3.1.2 将数据存到message表中 (手机信息百度云:https://pan.baidu.com/s/1fMKzWmpuO3FTiRHjhn4Nkg 提取码:xrc8)。
3.1.3 存储成功
3.2 java代码
3.2.1 DataSourceUtils 类
(注意此处需要导入jar包,并且需要将修改好了的c3p0-config.xml 配置文件,放在web项目的src目录下,)
https://pan.baidu.com/s/1eev43QR5TAFKi_ZRqIn_PQ 提取码:ebcw(此处是jar包和xml配置文件)
package cn.jsp.getdate;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils {
private static DataSource dataSource = new ComboPooledDataSource();
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
// 直接可以获取一个连接池
public static DataSource getDataSource() {
return dataSource;
}
// 获取连接对象
public static Connection getConnection() throws SQLException {
Connection con = tl.get();
if (con == null) {
con = dataSource.getConnection();
tl.set(con);
}
return con;
}
// 开启事务
public static void startTransaction() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.setAutoCommit(false);
}
}
// 事务回滚
public static void rollback() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.rollback();
}
}
// 提交并且 关闭资源及从ThreadLocall中释放
public static void commitAndRelease() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.commit(); // 事务提交
con.close();// 关闭资源
tl.remove();// 从线程绑定中移除
}
}
// 关闭资源方法
public static void closeConnection() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.close();
}
}
public static void closeStatement(Statement st) throws SQLException {
if (st != null) {
st.close();
}
}
public static void closeResultSet(ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
}
}
3.2.2 product 类(JavaBean)
package cn.jsp.getdate;
public class product {
int id;
String product_name;
String product_img;
double product_money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProduct_name() {
return product_name;
}
public void setProduct_name(String product_name) {
this.product_name = product_name;
}
public String getProduct_img() {
return product_img;
}
public void setProduct_img(String product_img) {
this.product_img = product_img;
}
public double getProduct_money() {
return product_money;
}
public void setProduct_money(double product_money) {
this.product_money = product_money;
}
}
3.2.3 product_servlet 类
package cn.jsp.getdate;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
public class product_servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 连接数据库编写sql语句,获取数据。
QueryRunner runner=new QueryRunner(DataSourceUtils.getDataSource());
String sql="select * from message";
//将数据存在List集合中
List<product> products=null;
try {
products = runner.query(sql,new BeanListHandler<product>(product.class));
}catch (SQLException e){
e.printStackTrace();
}
//将list集合存在request域中;
request.setAttribute("productsList",products);
//转发到show_product.jsp 页面进行显示
request.getRequestDispatcher("/show_product.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
3.2.4 jsp页面
<%@ page import="java.util.List" %>
<%@ page import="cn.jsp.getdate.product" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/3/19
Time: 19:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Show_Product</title>
<link rel="stylesheet" type="text/css" href="css/show_Product.css"/>
</head>
<body>
<!--导航栏-->
<div id="page">
<div id="AppBar">
<!--logo-->
<div class="logo">Second-hand mobile
<br/>phone</div>
<ul>
<li>首页</li>
<li>商店</li>
<li>app下载</li>
<li>联系我们</li>
</ul>
</div>
<!-- 显示商品-->
<div id="commodity">
<%
// System.out.println(request.getAttribute("productsList"));
List<product> products=(List<product>)request.getAttribute("productsList");
if(products!=null){
%>
<div class="low">
<%
for (product product:products){
%>
<ul>
<li class="img"><img src="<%=product.getProduct_img()%>" class="mobile_phone"/></li>
<li class="name"><%= product.getProduct_name()%></li>
<li class="money">¥<%= product.getProduct_money()%></li>
<li class="affirm">购买</li>
</ul>
<%
}
%>
</div>
<%
}
%>
</div>
</div>
</body>
</html>
3.2.5 jsp 的css样式
*{
margin: 0px;
padding: 0px;
}
#page{
width: 100%;
}
#AppBar{
width: 100%;
height: 50px;
background-color: #9278f7;
padding-top: 25px;
}
#page .logo{
float: left;
width: 20%;
height: 55px;
background-color: #6b6b6b;
margin-left: 25px;
margin-top: -25px;
text-align: center;
font-family: "楷体";
font-size: 16px;
color: white;
padding-top: 20px;
opacity: 0.7;
}
#page #AppBar ul li{
width: 10%;
height: 45px;
float: left;
margin-left: 10px;
text-align: center;
list-style: none;
font-size: 15px;
color: wheat;
}
#commodity{
width: 100%;
background-color: #FFFDFE;
}
#commodity .low{
width: 100%;
}
#commodity .low ul{
margin: 50px;
list-style: none;
float: right;
}
#commodity .low .img{
width: 150px;
height: 150px;
border: 1px dotted #333333;
}
.mobile_phone{
width: 100%;
height: 100%;
}
#commodity .low .name{
width: 150px;
height: 45px;
font-family: "宋体";
font-size: 10px;
text-align: center;
}
#commodity .low .money{
width: 150px;
height: 21px;
font-family: "宋体";
font-size: 10px;
text-align: center;
color: red;
}
#commodity .low .affirm{
width: 150px;
height: 21px;
background-color: #07524C;
font-size: 12px;
color: white;
text-align: center;
cursor: pointer;
}
四.演示
发布项目,根据自己的项目输入http://localhost:8080/web_war_exploded/product