案例2-添加商品
1 页面一加载就能动态的获取所有的分类
1 创建category表
CREATE TABLE category (
cid VARCHAR(50) NOT NULL,
cname VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (cid)
)
2 category表中添加数据
INSERT INTO category VALUES
('1','手机数码'),('2','运动户外'),
('3','电脑办公'),('4','家具家居'),
('5','鞋靴箱包'),('6','图书音像'),
('7','母婴孕婴'),('8','汽车用品');
3admin/product/list.jsp添加处理servlet
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="${pageContext.request.contextPath}/css/Style1.css"
rel="stylesheet" type="text/css" />
<script language="javascript"
src="${pageContext.request.contextPath}/js/public.js"></script>
<script type="text/javascript">
function addProduct(){
window.location.href = "${pageContext.request.contextPath}/adminAddProductUI";
}
</script>
</HEAD>
<body>
<br>
<form id="Form1" name="Form1"
action="${pageContext.request.contextPath}/user/list.jsp"
method="post">
<table cellSpacing="1" cellPadding="0" width="100%" align="center"
bgColor="#f5fafe" border="0">
<TBODY>
<tr>
<td class="ta_01" align="center" bgColor="#afd1f3"><strong>商品列表</strong>
</TD>
</tr>
<tr>
<td class="ta_01" align="right">
<button type="button" id="add" name="add" value="添加"
class="button_add" onclick="addProduct()">
添加</button>
</td>
</tr>
<tr>
<td class="ta_01" align="center" bgColor="#f5fafe">
<table cellspacing="0" cellpadding="1" rules="all"
bordercolor="gray" border="1" id="DataGrid1"
style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; WIDTH: 100%; WORD-BREAK: break-all; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: #f5fafe; WORD-WRAP: break-word">
<tr
style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3">
<td align="center" width="18%">序号</td>
<td align="center" width="17%">商品图片</td>
<td align="center" width="17%">商品名称</td>
<td align="center" width="17%">商品价格</td>
<td align="center" width="17%">是否热门</td>
<td width="7%" align="center">编辑</td>
<td width="7%" align="center">删除</td>
</tr>
<!-- varStatus 记录第几次遍历 -->
<c:forEach items="${productList }" var="product" varStatus="vs">
<tr onmouseover="this.style.backgroundColor = 'white'"
onmouseout="this.style.backgroundColor = '#F5FAFE';">
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="18%">${vs.count }</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="17%"><img width="40" height="45" src="${pageContext.request.contextPath }/${product.pimage }"></td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="17%">${product.pname }</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="17%">${product.shop_price }</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="17%">
${product.is_hot==1?"是":"否" }</td>
<td align="center" style="HEIGHT: 22px"><a
href="${ pageContext.request.contextPath }/admin/product/edit.jsp">
<img
src="${pageContext.request.contextPath}/images/i_edit.gif"
border="0" style="CURSOR: hand">
</a></td>
<td align="center" style="HEIGHT: 22px"><a href="#"> <img
src="${pageContext.request.contextPath}/images/i_del.gif"
width="16" height="16" border="0" style="CURSOR: hand">
</a></td>
</tr>
</c:forEach>
</table>
</td>
</tr>
</TBODY>
</table>
</form>
</body>
</HTML>
4 web层 AdminAddProductUIServlet
package www.test.web;
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 www.test.domain.Category;
import www.test.service.AdminProductService;
public class AdminAddProductUIServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获得所有的商品的类别数据
AdminProductService service = new AdminProductService();
List<Category> categoryList = null;
try {
categoryList = service.findAllCategory();
} catch (SQLException e) {
e.printStackTrace();
}
// 将获取到的categoryList存储到request域中
request.setAttribute("categoryList", categoryList);
//转发
request.getRequestDispatcher("/admin/product/add.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5 service层AdminProductService
package www.test.service;
import java.sql.SQLException;
import java.util.List;
import www.test.dao.AdminProductDao;
import www.test.domain.Category;
import www.test.domain.Product;
public class AdminProductService {
public List<Product> findAllProduct() throws SQLException {
//因为没有复杂业务 直接传递请求到dao层
AdminProductDao dao = new AdminProductDao();
return dao.findAllProduct();
}
public List<Category> findAllCategory() throws SQLException {
AdminProductDao dao = new AdminProductDao();
return dao.finAllCategory();
}
}
6 dao层AdminProductDao
package www.test.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import www.test.domain.Category;
import www.test.domain.Product;
import www.test.utils.C3P0Utils;
public class AdminProductDao {
public List<Product> findAllProduct() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product";
List<Product> productList = qr.query(sql, new BeanListHandler<Product>(Product.class));
return productList;
}
public List<Category> finAllCategory() 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;
}
}
7 /admin/product/add.jsp代码
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<LINK href="${pageContext.request.contextPath}/css/Style1.css" type="text/css" rel="stylesheet">
</HEAD>
<body>
<!-- -->
<form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/adminAddProductUI" method="post">
<table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0">
<tr>
<td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"
height="26">
<strong><STRONG>添加商品</STRONG>
</strong>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商品名称:
</td>
<td class="ta_01" bgColor="#ffffff">
<input type="text" name="pname" value="" id="userAction_save_do_logonName" class="bg"/>
</td>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
是否热门:
</td>
<td class="ta_01" bgColor="#ffffff">
<select name="is_hot">
<option value="1">是</option>
<option value="0">否</option>
</select>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
市场价格:
</td>
<td class="ta_01" bgColor="#ffffff">
<input type="text" name="market_price" value="" id="userAction_save_do_logonName" class="bg"/>
</td>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商城价格:
</td>
<td class="ta_01" bgColor="#ffffff">
<input type="text" name="shop_price" value="" id="userAction_save_do_logonName" class="bg"/>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商品图片:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<input type="file" name="pimage" />
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
所属分类:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<select name="cid">
<c:forEach items="${categoryList }" var="category">
<option value="${category.cid }">${category.cname }</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商品描述:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<textarea name="pdesc" rows="5" cols="30"></textarea>
</td>
</tr>
<tr>
<td class="ta_01" style="WIDTH: 100%" align="center"
bgColor="#f5fafe" colSpan="4">
<button type="submit" id="userAction_save_do_submit" value="确定" class="button_ok">
确认;
</button>
<FONT face="宋体"> </FONT>
<button type="reset" value="重置" class="button_cancel">重置</button>
<FONT face="宋体"> </FONT>
<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
<span id="Label1"></span>
</td>
</tr>
</table>
</form>
</body>
</HTML>
2 添加商品
1 给确认按钮所在表单的form添加servlet
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<LINK href="${pageContext.request.contextPath}/css/Style1.css" type="text/css" rel="stylesheet">
</HEAD>
<body>
<!-- -->
<form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/adminAddProduct" method="post">
<table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0">
<tr>
<td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"
height="26">
<strong><STRONG>添加商品</STRONG>
</strong>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商品名称:
</td>
<td class="ta_01" bgColor="#ffffff">
<input type="text" name="pname" value="" id="userAction_save_do_logonName" class="bg"/>
</td>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
是否热门:
</td>
<td class="ta_01" bgColor="#ffffff">
<select name="is_hot">
<option value="1">是</option>
<option value="0">否</option>
</select>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
市场价格:
</td>
<td class="ta_01" bgColor="#ffffff">
<input type="text" name="market_price" value="" id="userAction_save_do_logonName" class="bg"/>
</td>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商城价格:
</td>
<td class="ta_01" bgColor="#ffffff">
<input type="text" name="shop_price" value="" id="userAction_save_do_logonName" class="bg"/>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商品图片:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<input type="file" name="pimage" />
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
所属分类:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<select name="cid">
<c:forEach items="${categoryList }" var="category">
<option value="${category.cid }">${category.cname }</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
商品描述:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<textarea name="pdesc" rows="5" cols="30"></textarea>
</td>
</tr>
<tr>
<td class="ta_01" style="WIDTH: 100%" align="center"
bgColor="#f5fafe" colSpan="4">
<button type="submit" id="userAction_save_do_submit" value="确定" class="button_ok">
确认;
</button>
<FONT face="宋体"> </FONT>
<button type="reset" value="重置" class="button_cancel">重置</button>
<FONT face="宋体"> </FONT>
<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
<div>${isSuccess==true?"添加成功":"添加失败" }</div>
<span id="Label1"></span>
</td>
</tr>
</table>
</form>
</body>
</HTML>
2 web层AdminProductService
package www.test.web;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import www.test.domain.Product;
import www.test.service.AdminProductService;
public class AdminAddProductServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决乱码问题
request.setCharacterEncoding("UTF-8");
//获取数据
Map<String, String[]> parameterMap = request.getParameterMap();
//使用BeanUtils进行子映射封装
Product product = new Product();
try {
BeanUtils.populate(product, parameterMap);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
//此位置Product已经封装完毕----将表单的数据封装完毕
//手动设置表单中没有数据
//1)private String pid;
product.setPid(UUID.randomUUID().toString().replaceAll("-", ""));
//2)private String pimage;
product.setPimage("products/1/c_0033.jpg");
//3)private String pdate;//上架日期
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String pdate = format.format(new Date());
product.setPdate(pdate);
//4)private int pflag;//商品是否下载 0代表未下架
product.setPflag(0);
// 3 传递数据给service层
AdminProductService service = new AdminProductService();
boolean isSuccess = true;
try {
isSuccess = service.addProduct(product);
} catch (SQLException e) {
e.printStackTrace();
}
//将处理结果存储到request域中
request.setAttribute("isSuccess", isSuccess);
//跳转到列表页面
//response.sendRedirect(request.getContextPath()+"/adminProductList");
request.getRequestDispatcher("admin/product/add.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3 service层AdminProductService
package www.test.service;
import java.sql.SQLException;
import java.util.List;
import www.test.dao.AdminProductDao;
import www.test.domain.Category;
import www.test.domain.Product;
public class AdminProductService {
public List<Product> findAllProduct() throws SQLException {
//因为没有复杂业务 直接传递请求到dao层
AdminProductDao dao = new AdminProductDao();
return dao.findAllProduct();
}
public List<Category> findAllCategory() throws SQLException {
AdminProductDao dao = new AdminProductDao();
return dao.finAllCategory();
}
// 添加商品
public boolean addProduct(Product product) throws SQLException {
AdminProductDao dao = new AdminProductDao();
return dao.addProduct(product);
}
}
4 dao层AdminProductDao
package www.test.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import www.test.domain.Category;
import www.test.domain.Product;
import www.test.utils.C3P0Utils;
public class AdminProductDao {
public List<Product> findAllProduct() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product";
List<Product> productList = qr.query(sql, new BeanListHandler<Product>(Product.class));
return productList;
}
public List<Category> finAllCategory() 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 boolean addProduct(Product product) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "insert into product values(?,?,?,?,?,?,?,?,?,?)";
Object[] params = {product.getPid(),product.getPname(),product.getMarket_price(),product.getShop_price(),product.getPimage(),product.getPdate(),product.getIs_hot(),product.getPdesc(),product.getPflag(),product.getCid()};
int num = qr.update(sql, params);
if(num>0){
return true;
}else{
return false;
}
}
}
来源:https://blog.csdn.net/fmk1023/article/details/100085140