电商项目笔记之八:商品和配图的管理



一:添加新商品

商品除了名称还有有分类和照片什么,先说上传照片

商品实例中持有一个上传图片的实例:

public class UploadFile implements Serializable{
	private static final long serialVersionUID = 1L;
	// 编号
	private Integer id;
	// 文件路径
	private String path;

public class ProductInfo implements Serializable {
	private static final long serialVersionUID = 1L;
	private Integer id;// 商品编号
	private String name;// 商品名称
	private String description;// 商品说明
	private Date createTime = new Date();// 上架时间
	private Float baseprice;// 商品采购价格
	private Float marketprice;// 现在市场价格
	private Float sellprice;// 商城销售价格
	private Sex sexrequest;// 所属性别
	private Boolean commend = false;// 是否是推荐商品(默认值为false)
	private Integer clickcount = 1;// 访问量(统计受欢迎的程度)
	private Integer sellCount = 0;// 销售数量(统计热销商品)
	private ProductCategory category;// 所属类别
	private UploadFile uploadFile;// 上传文件

关系设置在protectInfo这端 :

<many-to-one name="uploadFile" unique="true" cascade="all" lazy="false"/>




1.前台上传

(这个方法不如在struts.xml配置上传参数好, 那里边能配置更多对于上传的限制)

<s:form action="product_save" namespace="/admin/product"
	enctype="multipart/form-data" method="post">

<td><s:file id="file" name="file"></s:file></td>

2.后台保存

public String save() throws Exception{
		if(file != null ){//如果文件路径不为空
			//获取服务器的绝对路径
			String path = ServletActionContext.getServletContext().getRealPath("/upload");
			File dir = new File(path);
			if(!dir.exists()){//如果文件夹不存在
				dir.mkdir();//创建文件夹
			}
			String fileName = StringUitl.getStringTime() + ".jpg";//自定义图片名称
			FileInputStream fis = null;//输入流
			FileOutputStream fos = null;//输出流
			try {
				fis = new FileInputStream(file);//根据上传文件创建InputStream实例
				fos = new FileOutputStream(new File(dir,fileName)); //创建写入服务器地址的输出流对象
				byte[] bs = new byte[1024 * 4]; //创建字节数组实例
				int len = -1;
				while((len = fis.read(bs)) != -1){//循环读取文件
					fos.write(bs, 0, len);//向指定的文件夹中写数据
				}
				UploadFile uploadFile = new UploadFile();//实例化对象
				uploadFile.setPath(fileName);//设置文件名称
				product.setUploadFile(uploadFile);//设置上传路径
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
				fos.flush();
				fos.close();
				fis.close();
			}
		}

//如果商品类别和商品类别ID不为空,则保存商品类别信息
		if(product.getCategory() != null && product.getCategory().getId() != null){
			product.setCategory(categoryDao.load(product.getCategory().getId()));
		}
		//如果上传文件和上传文件ID不为空,则保存文件的上传路径信息
		if(product.getUploadFile() != null && product.getUploadFile().getId() != null){
			product.setUploadFile(uploadFileDao.load(product.getUploadFile().getId()));
		}
		productDao.saveOrUpdate(product);//保存商品信息
		return list();

3.显示:

<s:a action="product_select" namespace="/product" >
						<s:param name="id" value="id"></s:param>
						<img width="150" height="150" src="<s:property value="#request.get('javax.servlet.forward.context_path')"/>/upload/<s:property value="uploadFile.path"/>">
					</s:a>





二:删改

改还是用上边的save()方法,没什么区别

删就直接去删掉protectInfo实例, 因为有级联的关联 所以就把图片也一起删掉了









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值