注意:添加中前台有多个表单以及有上传表单
dao:
// 保存
public int addProduct(Product product) throws SQLException {
//sql进行添加
String sql = "insert into Product values(?,?,?,?,?,?,?,?,?,?)";
//用数据库连接池初始化runner对象
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
// 返回值 int代表影响的行数
return runner.update(sql, product.getPid(), product.getPname(), product
.getMarket_price(), product.getShop_price(), product
.getPimage(), new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(product.getPdate()), product.getIs_hot(), product
.getPdesc(), product.getPflag(), product.getCid());
}
// 删除数据库的记录
public int deleteProduct(String pid) throws SQLException {
//sql根据pid进行删除
String sql = "delete from product where pid=?";
//用数据库连接池初始化runner对象
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
return runner.update(sql, pid);
}
service:
//添加
public boolean addCategory(Category category){
category.setCid(CommonsUtils.getUUID());
boolean b = false;
try {
b = cd.addCategory(category)>0 ? true:false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
//删除
public boolean deleteCategory(String cid){
try {
return cd.deleteCategory(cid)>0?true:false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
servlet:
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, FileUploadException,
IllegalAccessException, InvocationTargetException {
FileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload sf = new ServletFileUpload(fileItemFactory);
if (sf.isMultipartContent(request))// 判断表单enctype为否为mutipart-data
{
// 如果表单含有上传标签,那么getParamMap方法失效,
// 因为前台input太多,所以我们要使用beanUtils快速封装,那么我们就需要自己封装Map了
Map<String, String> paramsMap = new HashMap<String, String>();
List<FileItem> itemList = sf.parseRequest(request);
// 1.上传
for (FileItem fileItem : itemList) {
if (!fileItem.isFormField())// 判断是否为上传组件
{
// 1.1执行上传
// 1.1.1获取服务器上传目录路径
String path = getServletContext().getRealPath("/products");
// 1.1.2上传
InputStream is = fileItem.getInputStream();
// getFieldName()获取表单标签name属性值
// getName()获取文件名
// getString()获取表单标签value值
FileOutputStream fos = new FileOutputStream(new File(path,
fileItem.getName()));
IOUtils.copy(is, fos);
// 清除临时文件
fileItem.delete();
is.close();
fos.close();
// 将pimage属性存入map
paramsMap.put(fileItem.getFieldName(), "products/"
+ fileItem.getName());
} else// 普通组件
{
paramsMap.put(fileItem.getFieldName(),
fileItem.getString("UTF-8"));
}
}
// 2.封装product对象 保存到数据库里
Product product = new Product();
BeanUtils.populate(product, paramsMap);
// 调用保存保存
boolean result = ps.addProduct(product);
if (result) {
response.getWriter()
.println(
"<script>confirm('添加成功');location.href='/ShopStore/product?method=list';</script>");
} else {
response.getWriter()
.println(
"<script>confirm('添加失败');location.href='/ShopStore/admin/product/add.jsp;</script>");
}
}
}
public void delete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String pid = request.getParameter("pid");
// 获取欲删除的product对象
Product product = ps.findProductByPid(pid);
// 删除数据库记录
boolean result = ps.deleteProduct(pid);
// 删除服务器端图片
String path = getServletContext().getRealPath("");
File file = new File(path, product.getPimage());
if (file.exists()) {// 判断文件是否存在
file.delete();// 删除
}
if (result) {
response.getWriter()
.println(
"<script>confirm('删除成功');location.href='/ShopStore/product?method=list';</script>");
} else {
response.getWriter()
.println(
"<script>confirm('删除失败');location.href='/ShopStore/product?method=list'</script>");
}
}
Thank you for reading