在mysql中添加商品_【web第十九天】商品添加功能

本文详细介绍了在MySQL数据库中添加商品功能的实现过程,包括后台页面准备、数据库表设计、文件上传处理、servlet封装数据、service和dao层操作,以及事务管理和数据库隔离级别的讨论。主要涉及商品表、商品种类表的创建,以及商品信息的存储、文件上传、异常处理等环节,最后探讨了事务控制的两种方案和ThreadLocal在解决并发问题中的应用。
摘要由CSDN通过智能技术生成

商品添加功能

1.准备文件上传的后台页面

2.准备数据库中的表:商品表,商品种类表(创建对应的javaBean)

3.准备文件上传表单,修改form中的提交地址到servlet

4.servlet封装数据,并交给service添加商品,跳转到页面(利用工厂模式,  完善配置文件)

4.1 导包

4.2 如果是普通字段:存入map

4.3 如果是文件上传项:将路径存入map

5.service:调用dao添加商品

6.dao进行添加

1.搭建easymall后台页面

将课前资料中的后台页面backend拷贝到WebRoot下,并修改_left.jsp中商品添加

2.设计商品相关表

在easymall数据库中创建商品种类表和商品表

商品种类表

create table prod_category(

id int primary key auto_increment,        -- 商品种类编号

cname varchar(255)                      -- 商品种类名称

);

商品表

create table prod(

id int primary key auto_increment,        -- 商品编号

name varchar(255),                       -- 商品名称

price double,                      -- 商品单价

cid int,                                           -- 商品种类编号(外键)

pnum int,                                       -- 商品库存

imgurl varchar(255),                       -- 图片地址

description varchar(255)                     -- 商品描述

);

3.后台开发

在bean包中创建类:ProdCategory,添加如下属性并添加get和set方法:

private int id;

private String cname;

在bean包中创建类:ProdCategory,添加如下属性并添加get和set方法:

private int id;

private String name;

private double price;

private int cid;

private int pnum;

private String imgurl;

private String description;

private String cname;

在后台页面manageAddProd.jsp中,

表单提交地址改为:

在web包中创建包:cn.tedu.web.backend,在此包下创建servlet:ManageAddProdServlet,并在WEB-INF下创建文件夹:temp和upload,分别作为临时文件和商品图片的存放位置,然后导入文件上传相关的jar包:commons-fileupload-1.2.1.jar和commons-io-1.4.jar,在ManageAddProdServlet中添加如下代码:

try {

ServletContext sc = this.getServletContext();

Map paramMap = new HashMap();

//1.上传商品图片

//生成文件上传工厂

String temp = "WEB-INF/temp";

String upload = "WEB-INF/upload";

DiskFileItemFactory factory = new DiskFileItemFactory(100,new File(sc.getRealPath(temp)));

//创建文件上传核心类

ServletFileUpload fileUpload = new ServletFileUpload(factory);

//判断是否是正确的文件上传表单

if(!fileUpload.isMultipartContent(request)){

throw new MsgException("请使用正确的表单上传数据!");

}

//设定上传文件的大小限制

fileUpload.setFileSizeMax(1024*1024);

fileUpload.setSizeMax(1024*1024);

//设定编码解决中文文件名乱码

fileUpload.setHeaderEncoding(sc.getInitParameter("encode"));

//解析请求 获取FileItem集合

List items = fileUpload.parseRequest(request);

//处理item

for (FileItem item : items) {//普通字段项

if(item.isFormField()){

String name = item.getFieldName();

String value = item.getString(sc.getInitParameter("encode"));

System.out.println(name+":"+value);

paramMap.put(name, value);

}else{//文件上传项

String fname = item.getName();

//ie文件名bug

if(fname.contains("\\")){

fname = fname.substring(fname.lastIndexOf("\\")+1);

}

//文件名重复

fname = UUID.randomUUID().toString()+"_"+fname;

//分目录存储,计算存储路径

String hash = Integer.toHexString(fname.hashCode());

while(hash.length()<8){

hash += "0";

}

for (int i = 0; i < hash.length(); i++) {

upload += "/"+hash.charAt(i);

}

new File(sc.getRealPath(upload)).mkdirs();

String savePath = sc.getRealPath(upload+"/"+fname);

paramMap.put("imgurl", upload+"/"+fname);

//上传文件

InputStream in = item.getInputStream();

OutputStream out = new FileOutputStream(savePath);

byte[] data = new byte[1024];

int len = -1;

while((len=in.read(data)) != -1){

out.write(data,0,len);

}

in.close();

out.close();

//删除临时文件

item.delete();

}

}

//2.将商品信息保存到数据库

ProdService service = BasicFactory.getFactory().getInstance(ProdService.class);

//创建prod对象封装数据

Prod prod = new Prod();

prod.setName(paramMap.get("name"));

prod.setPrice(Double.parseDouble(paramMap.get("price")));

prod.setCname(paramMap.get("cname"));

prod.setPnum(Integer.parseInt(paramMap.get("pnum")));

prod.setImgurl(paramMap.get("imgurl"));

prod.setDescription(paramMap.g

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值