步骤 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 : 产品缩略图效果
增值内容,请先登录
完整的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;
}
}
增值内容,请先登录
完整的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); }
增值内容,请先登录
完整的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项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
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();
}
}
}
增值内容,请先登录
完整的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";
}
}
增值内容,请先登录
完整的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"%>
增值内容,请先登录
完整的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>
增值内容,请先登录
完整的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";
}
增值内容,请先登录
完整的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"%>
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2019-12-28
这个 ssh 框架的删除图片功能?
2 个答案
阿龙_ 跳转到问题位置 答案时间:2019-12-29 我已经搞完ssh 了,只是在弄 ssm 的时候突然联想到这个功能,然后自己比较一下两个整合框架的区别,
站长好努力啊,周末还在回答问题!加油!!
how2j 跳转到问题位置 答案时间:2019-12-29 忘记删了 -_-
e? 你前面还在ssm提问,这里又来ssh提问,你是两个项目同时撸吗?
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-12-17
步骤10,ProductImageAction中,删除是否应该为 productImageService.delete(productImage);
2018-08-02
站长,有个问题问一下,对于这种增删改查,如何确认是否正确执行结束呢?比如删除图片,执行了delete之后,还得删除对应目录的图片,那么在删除图片的时候是否还要判断delete是否成功呢?
2018-07-07
关于图片存储路径的问题
2018-05-10
图片路径问题
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 3 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|