how2j.cn

-->
下载区
文件名 文件大小
请先登录 19m
增值内容 19m
19m

解压rar如果失败,请用5.21版本或者更高版本的winrar

点击下载 winrar5.21
步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 效果截图   
步骤 3 : 模仿和排错   
步骤 4 : ProductImage   
步骤 5 : Product   
步骤 6 : ProductImageService   
步骤 7 : ProductImageServiceImpl   
步骤 8 : Action4Pojo   
步骤 9 : Action4Service   
步骤 10 : ProductImageAction   
步骤 11 : listProductImage.jsp   
步骤 12 : 查询功能讲解   
步骤 13 : 增加功能讲解   
步骤 14 : 删除功能讲解   
步骤 15 : 编辑和修改   
步骤 16 : ProductAction   
步骤 17 : listProduct.jsp   
步骤 18 : 产品缩略图效果   

步骤 1 :

先运行,看到效果,再学习

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
效果截图
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.pojo; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name = "productImage") public class ProductImage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @ManyToOne @JoinColumn(name="pid") private Product product; private String type; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } }
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.pojo; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Transient; @Entity @Table(name = "product") public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") int id; @ManyToOne @JoinColumn(name="cid") private Category category; private String name; private String subTitle; private float originalPrice; private float promotePrice; private int stock; private Date createDate; @Transient private ProductImage firstProductImage; public int getId() { return id; } public void setId(int id) { this.id = id; } public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSubTitle() { return subTitle; } public void setSubTitle(String subTitle) { this.subTitle = subTitle; } public float getOriginalPrice() { return originalPrice; } public void setOriginalPrice(float originalPrice) { this.originalPrice = originalPrice; } public float getPromotePrice() { return promotePrice; } public void setPromotePrice(float promotePrice) { this.promotePrice = promotePrice; } public int getStock() { return stock; } public void setStock(int stock) { this.stock = stock; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public ProductImage getFirstProductImage() { return firstProductImage; } public void setFirstProductImage(ProductImage firstProductImage) { this.firstProductImage = firstProductImage; } }
步骤 6 :

ProductImageService

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service; import java.util.List; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.pojo.ProductImage; public interface ProductImageService extends BaseService { public static final String type_single = "type_single"; public static final String type_detail = "type_detail"; public List<ProductImage> list(String key_product, Product product, String key_type, String type) ; public void setFirstProdutImage(Product product); }
package com.how2java.tmall.service;

import java.util.List;

import com.how2java.tmall.pojo.Product;
import com.how2java.tmall.pojo.ProductImage;

public interface ProductImageService extends BaseService {
	
	public static final String type_single = "type_single";
	public static final String type_detail = "type_detail";
	
	public List<ProductImage> list(String key_product, Product product, String key_type, String type) ;	
	public void setFirstProdutImage(Product product);
	
}
步骤 7 :

ProductImageServiceImpl

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service.impl; import java.util.HashMap; import java.util.List; import java.util.Set; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.pojo.ProductImage; import com.how2java.tmall.service.ProductImageService; @Service public class ProductImageServiceImpl extends BaseServiceImpl implements ProductImageService { @Override public void setFirstProdutImage(Product product) { if(null!=product.getFirstProductImage()) return; List<ProductImage> pis= list("product", product, "type", ProductImageService.type_single); if(!pis.isEmpty()) product.setFirstProductImage(pis.get(0)); } public List<ProductImage> list(String key_product, Product product, String key_type, String type) { DetachedCriteria dc = DetachedCriteria.forClass(clazz); dc.add(Restrictions.eq(key_product, product)); dc.add(Restrictions.eq(key_type, type)); dc.addOrder(Order.desc("id")); return this.findByCriteria(dc); } }
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
Action4Pojo
package com.how2java.tmall.action; import java.util.List; import com.how2java.tmall.pojo.Category; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.pojo.ProductImage; import com.how2java.tmall.pojo.Property; public class Action4Pojo extends Action4Pagination { protected Category category; protected Property property; protected Product product; protected ProductImage productImage; protected List<Category> categorys; protected List<Property> propertys; protected List<Product> products; protected List<ProductImage> productSingleImages; protected List<ProductImage> productDetailImages; public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } public List<Category> getCategorys() { return categorys; } public void setCategorys(List<Category> categorys) { this.categorys = categorys; } public Property getProperty() { return property; } public void setProperty(Property property) { this.property = property; } public List<Property> getPropertys() { return propertys; } public void setPropertys(List<Property> propertys) { this.propertys = propertys; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public List<Product> getProducts() { return products; } public void setProducts(List<Product> products) { this.products = products; } public ProductImage getProductImage() { return productImage; } public void setProductImage(ProductImage productImage) { this.productImage = productImage; } public List<ProductImage> getProductSingleImages() { return productSingleImages; } public void setProductSingleImages(List<ProductImage> productSingleImages) { this.productSingleImages = productSingleImages; } public List<ProductImage> getProductDetailImages() { return productDetailImages; } public void setProductDetailImages(List<ProductImage> productDetailImages) { this.productDetailImages = productDetailImages; } }
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.action; import java.lang.reflect.Method; import org.apache.commons.lang3.text.WordUtils; import org.springframework.beans.factory.annotation.Autowired; import com.how2java.tmall.service.CategoryService; import com.how2java.tmall.service.ProductImageService; import com.how2java.tmall.service.ProductService; import com.how2java.tmall.service.PropertyService; public class Action4Service extends Action4Pojo{ @Autowired CategoryService categoryService; @Autowired PropertyService propertyService; @Autowired ProductService productService; @Autowired ProductImageService productImageService; /** * transient to persistent * 瞬时对象转换为持久对象 * @param o */ public void t2p(Object o){ try { Class clazz = o.getClass(); int id = (Integer) clazz.getMethod("getId").invoke(o); Object persistentBean = categoryService.get(clazz, id); String beanName = clazz.getSimpleName(); Method setMethod = getClass().getMethod("set" + WordUtils.capitalize(beanName), clazz); setMethod.invoke(this, persistentBean); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 10 :

ProductImageAction

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.action; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import com.how2java.tmall.service.ProductImageService; import com.how2java.tmall.util.ImageUtil; public class ProductImageAction extends Action4Result { @Action("admin_productImage_list") public String list() { productSingleImages = productImageService.list("product",product,"type", ProductImageService.type_single); productDetailImages = productImageService.list("product",product,"type", ProductImageService.type_detail); t2p(product); return "listProductImage"; } @Action("admin_productImage_add") public String add() { productImageService.save(productImage); String folder = "img/"; if(ProductImageService.type_single.equals(productImage.getType())){ folder +="productSingle"; } else{ folder +="productDetail"; } File imageFolder= new File(ServletActionContext.getServletContext().getRealPath(folder)); File file = new File(imageFolder,productImage.getId()+".jpg"); String fileName = file.getName(); try { FileUtils.copyFile(img, file); BufferedImage img = ImageUtil.change2jpg(file); ImageIO.write(img, "jpg", file); } catch (IOException e) { e.printStackTrace(); } if(ProductImageService.type_single.equals(productImage.getType())){ String imageFolder_small= ServletActionContext.getServletContext().getRealPath("img/productSingle_small"); String imageFolder_middle= ServletActionContext.getServletContext().getRealPath("img/productSingle_middle"); File f_small = new File(imageFolder_small, fileName); File f_middle = new File(imageFolder_middle, fileName); f_small.getParentFile().mkdirs(); f_middle.getParentFile().mkdirs(); ImageUtil.resizeImage(file, 56, 56, f_small); ImageUtil.resizeImage(file, 217, 190, f_middle); } return "listProductImagePage"; } @Action("admin_productImage_delete") public String delete() { t2p(productImage); productService.delete(productImage); return "listProductImagePage"; } }
步骤 11 :

listProductImage.jsp

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@include file="../include/admin/adminHeader.jsp"%> <%@include file="../include/admin/adminNavigator.jsp"%> <script> $(function(){ $(".addFormSingle").submit(function(){ if(checkEmpty("filepathSingle","图片文件")){ $("#filepathSingle").value(""); return true; } return false; }); $(".addFormDetail").submit(function(){ if(checkEmpty("filepathDetail","图片文件")) return true; return false; }); }); </script> <title>产品图片管理</title> <div class="workingArea"> <ol class="breadcrumb"> <li><a href="admin_category_list">所有分类</a></li> <li><a href="admin_product_list?category.id=${product.category.id}">${product.category.name}</a></li> <li class="active">${product.name}</li> <li class="active">产品图片管理</li> </ol> <table class="addPictureTable" align="center"> <tr> <td class="addPictureTableTD"> <div> <div class="panel panel-warning addPictureDiv"> <div class="panel-heading">新增产品<b class="text-primary"> 单个 </b>图片</div> <div class="panel-body"> <form method="post" class="addFormSingle" action="admin_productImage_add" enctype="multipart/form-data"> <table class="addTable"> <tr> <td>请选择本地图片 尺寸400X400 为佳</td> </tr> <tr> <td> <input id="filepathSingle" type="file" name="img" /> </td> </tr> <tr class="submitTR"> <td align="center"> <input type="hidden" name="productImage.type" value="type_single" /> <input type="hidden" name="productImage.product.id" value="${product.id}" /> <button type="submit" class="btn btn-success">提 交</button> </td> </tr> </table> </form> </div> </div> <table class="table table-striped table-bordered table-hover table-condensed"> <thead> <tr class="success"> <th>ID</th> <th>产品单个图片缩略图</th> <th>删除</th> </tr> </thead> <tbody> <c:forEach items="${productSingleImages}" var="pi"> <tr> <td>${pi.id}</td> <td> <a title="点击查看原图" href="img/productSingle/${pi.id}.jpg"><img height="50px" src="img/productSingle/${pi.id}.jpg"></a> </td> <td><a deleteLink="true" href="admin_productImage_delete?productImage.id=${pi.id}"><span class=" glyphicon glyphicon-trash"></span></a></td> </tr> </c:forEach> </tbody> </table> </div> </td> <td class="addPictureTableTD"> <div> <div class="panel panel-warning addPictureDiv"> <div class="panel-heading">新增产品<b class="text-primary"> 详情 </b>图片</div> <div class="panel-body"> <form method="post" class="addFormDetail" action="admin_productImage_add" enctype="multipart/form-data"> <table class="addTable"> <tr> <td>请选择本地图片 宽度790 为佳</td> </tr> <tr> <td> <input id="filepathDetail" type="file" name="img" /> </td> </tr> <tr class="submitTR"> <td align="center"> <input type="hidden" name="productImage.type" value="type_detail" /> <input type="hidden" name="productImage.product.id" value="${product.id}" /> <button type="submit" class="btn btn-success">提 交</button> </td> </tr> </table> </form> </div> </div> <table class="table table-striped table-bordered table-hover table-condensed"> <thead> <tr class="success"> <th>ID</th> <th>产品详情图片缩略图</th> <th>删除</th> </tr> </thead> <tbody> <c:forEach items="${productDetailImages}" var="pi"> <tr> <td>${pi.id}</td> <td> <a title="点击查看原图" href="img/productDetail/${pi.id}.jpg"><img height="50px" src="img/productDetail/${pi.id}.jpg"></a> </td> <td><a deleteLink="true" href="admin_productImage_delete?productImage.id=${pi.id}"><span class=" glyphicon glyphicon-trash"></span></a></td> </tr> </c:forEach> </tbody> </table> </div> </td> </tr> </table> </div> <%@include file="../include/admin/adminFooter.jsp"%>
步骤 12 :

查询功能讲解

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
查询功能讲解
public String list() { productSingleImages = productImageService.list("product",product,"type", ProductImageService.type_single); productDetailImages = productImageService.list("product",product,"type", ProductImageService.type_detail); t2p(product); return "listProductImage"; }
<c:forEach items="${productSingleImages}" var="pi"> <tr> <td>${pi.id}</td> <td> <a title="点击查看原图" href="img/productSingle/${pi.id}.jpg"><img height="50px" src="img/productSingle/${pi.id}.jpg"></a> </td> <td><a deleteLink="true" href="admin_productImage_delete?productImage.id=${pi.id}"><span class=" glyphicon glyphicon-trash"></span></a></td> </tr> </c:forEach>
<c:forEach items="${productDetailImages}" var="pi"> <tr> <td>${pi.id}</td> <td> <a title="点击查看原图" href="img/productDetail/${pi.id}.jpg"><img height="50px" src="img/productDetail/${pi.id}.jpg"></a> </td> <td><a deleteLink="true" href="admin_productImage_delete?productImage.id=${pi.id}"><span class=" glyphicon glyphicon-trash"></span></a></td> </tr> </c:forEach>
步骤 13 :

增加功能讲解

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增加功能讲解
<form method="post" class="addFormSingle" action="admin_productImage_add" enctype="multipart/form-data"> <table class="addTable"> <tr> <td>请选择本地图片 尺寸400X400 为佳</td> </tr> <tr> <td> <input id="filepathSingle" type="file" name="img" /> </td> </tr> <tr class="submitTR"> <td align="center"> <input type="hidden" name="productImage.type" value="type_single" /> <input type="hidden" name="productImage.product.id" value="${product.id}" /> <button type="submit" class="btn btn-success">提 交</button> </td> </tr> </table> </form>
public String add() { productImageService.save(productImage); String folder = "img/"; if(ProductImageService.type_single.equals(productImage.getType())){ folder +="productSingle"; } else{ folder +="productDetail"; } File imageFolder= new File(ServletActionContext.getServletContext().getRealPath(folder)); File file = new File(imageFolder,productImage.getId()+".jpg"); String fileName = file.getName(); try { FileUtils.copyFile(img, file); BufferedImage img = ImageUtil.change2jpg(file); ImageIO.write(img, "jpg", file); } catch (IOException e) { e.printStackTrace(); } if(ProductImageService.type_single.equals(productImage.getType())){ String imageFolder_small= ServletActionContext.getServletContext().getRealPath("img/productSingle_small"); String imageFolder_middle= ServletActionContext.getServletContext().getRealPath("img/productSingle_middle"); File f_small = new File(imageFolder_small, fileName); File f_middle = new File(imageFolder_middle, fileName); f_small.getParentFile().mkdirs(); f_middle.getParentFile().mkdirs(); ImageUtil.resizeImage(file, 56, 56, f_small); ImageUtil.resizeImage(file, 217, 190, f_middle); } return "listProductImagePage"; }
步骤 14 :

删除功能讲解

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
删除功能讲解
public String delete() { t2p(productImage); productService.delete(productImage); return "listProductImagePage"; }
	public String delete() {
		t2p(productImage);
		productService.delete(productImage);
		return "listProductImagePage";
	}
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.action; import java.util.Date; import org.apache.struts2.convention.annotation.Action; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.util.Page; public class ProductAction extends Action4Result { @Action("admin_product_list") public String list() { if(page==null) page = new Page(); int total = productService.total(category); page.setTotal(total); page.setParam("&category.id="+category.getId()); products = productService.list(page,category); for (Product product : products) { productImageService.setFirstProdutImage(product); } t2p(category); return "listProduct"; } @Action("admin_product_add") public String add() { product.setCreateDate(new Date()); productService.save(product); return "listProductPage"; } @Action("admin_product_delete") public String delete() { t2p(product); productService.delete(product); return "listProductPage"; } @Action("admin_product_edit") public String edit() { t2p(product); return "editProduct"; } @Action("admin_product_update") public String update() { Product productFromDB= (Product)productService.get(product.getId()); product.setCreateDate(productFromDB.getCreateDate()); productService.update(product); return "listProductPage"; } }
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@include file="../include/admin/adminHeader.jsp"%> <%@include file="../include/admin/adminNavigator.jsp"%> <script> $(function() { $("#addForm").submit(function() { if (!checkEmpty("name", "产品名称")) return false; if (!checkEmpty("subTitle", "小标题")) return false; if (!checkNumber("originalPrice", "原价格")) return false; if (!checkNumber("promotePrice", "优惠价格")) return false; if (!checkInt("stock", "库存")) return false; return true; }); }); </script> <title>产品管理</title> <div class="workingArea"> <ol class="breadcrumb"> <li><a href="admin_category_list">所有分类</a></li> <li><a href="admin_product_list?category.id=${category.id}">${category.name}</a></li> <li class="active">产品管理</li> </ol> <div class="listDataTableDiv"> <table class="table table-striped table-bordered table-hover table-condensed"> <thead> <tr class="success"> <th>ID</th> <th>图片</th> <th>产品名称</th> <th>产品小标题</th> <th width="53px">原价格</th> <th width="80px">优惠价格</th> <th width="80px">库存数量</th> <th width="80px">图片管理</th> <th width="80px">设置属性</th> <th width="42px">编辑</th> <th width="42px">删除</th> </tr> </thead> <tbody> <c:forEach items="${products}" var="p"> <tr> <td>${p.id}</td> <td> <c:if test="${!empty p.firstProductImage}"> <img width="40px" src="img/productSingle/${p.firstProductImage.id}.jpg"> </c:if> </td> <td>${p.name}</td> <td>${p.subTitle}</td> <td>${p.originalPrice}</td> <td>${p.promotePrice}</td> <td>${p.stock}</td> <td><a href="admin_productImage_list?product.id=${p.id}"><span class="glyphicon glyphicon-picture"></span></a></td> <td><a href="admin_propertyValue_edit?product.id=${p.id}"><span class="glyphicon glyphicon-th-list"></span></a></td> <td><a href="admin_product_edit?product.id=${p.id}"><span class="glyphicon glyphicon-edit"></span></a></td> <td><a deleteLink="true" href="admin_product_delete?product.id=${p.id}"><span class=" glyphicon glyphicon-trash"></span></a></td> </tr> </c:forEach> </tbody> </table> </div> <div class="pageDiv"> <%@include file="../include/admin/adminPage.jsp"%> </div> <div class="panel panel-warning addDiv"> <div class="panel-heading">新增产品</div> <div class="panel-body"> <form method="post" id="addForm" action="admin_product_add"> <table class="addTable"> <tr> <td>产品名称</td> <td><input id="name" name="product.name" type="text" class="form-control"></td> </tr> <tr> <td>产品小标题</td> <td><input id="subTitle" name="product.subTitle" type="text" class="form-control"></td> </tr> <tr> <td>原价格</td> <td><input id="originalPrice" value="99.98" name="product.originalPrice" type="text" class="form-control"></td> </tr> <tr> <td>优惠价格</td> <td><input id="promotePrice" value="19.98" name="product.promotePrice" type="text" class="form-control"></td> </tr> <tr> <td>库存</td> <td><input id="stock" value="99" name="product.stock" type="text" class="form-control"></td> </tr> <tr class="submitTR"> <td colspan="2" align="center"> <input type="hidden" name="product.category.id" value="${category.id}"> <button type="submit" class="btn btn-success">提 交</button> </td> </tr> </table> </form> </div> </div> </div> <%@include file="../include/admin/adminFooter.jsp"%>
步骤 18 :

产品缩略图效果

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
产品缩略图效果


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-12-28 这个 ssh 框架的删除图片功能?
阿龙_

public String delete() { t2p(productImage); productService.delete(productImage); return "listProductImagePage"; } 看代码好像只实现了删除数据库的数据,并没有删除图片的代码! 是框架自动实现删除的功能,还是 ssh没有做这个删除图片的功能啊?




2 个答案

阿龙_
答案时间:2019-12-29
我已经搞完ssh 了,只是在弄 ssm 的时候突然联想到这个功能,然后自己比较一下两个整合框架的区别, 站长好努力啊,周末还在回答问题!加油!!

how2j
答案时间:2019-12-29
忘记删了 -_- e? 你前面还在ssm提问,这里又来ssh提问,你是两个项目同时撸吗?



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2019-12-17 步骤10,ProductImageAction中,删除是否应该为 productImageService.delete(productImage);
Ivan2019




站长,有点小问题,谢谢
加载中

							

							


1 个答案

how2j
答案时间:2019-12-18
你说的对,这里写岔了。 不过呢依然可以运行,因为 hibernate 会自动识别是哪个类,而删除对应的表的。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-08-02 站长,有个问题问一下,对于这种增删改查,如何确认是否正确执行结束呢?比如删除图片,执行了delete之后,还得删除对应目录的图片,那么在删除图片的时候是否还要判断delete是否成功呢?
2018-07-07 关于图片存储路径的问题
2018-05-10 图片路径问题


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 3 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 已下架的-天猫整站SSH-产品图片管理 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图