how2j.cn

步骤 1 : 明确需求,首页需要什么数据?   
步骤 2 : Category   
步骤 3 : ProductService   
步骤 4 : ProductServiceImpl   
步骤 5 : ForeController   
步骤 6 : home.jsp   

步骤 1 :

明确需求,首页需要什么数据?

edit
增值内容,请先登录
完整的SSM模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSM一整套技术栈, 从无到有涵盖全部126个知识点,560个开发步骤, 充实SSM项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
明确需求,首页需要什么数据?
增值内容,请先登录
完整的SSM模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSM一整套技术栈, 从无到有涵盖全部126个知识点,560个开发步骤, 充实SSM项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
Category
package com.how2java.tmall.pojo; import java.util.List; public class Category { private Integer id; private String name; /*如下是非数据库字段*/ private List<Product> products; private List<List<Product>> productsByRow; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public List<Product> getProducts() { return products; } public void setProducts(List<Product> products) { this.products = products; } public List<List<Product>> getProductsByRow() { return productsByRow; } public void setProductsByRow(List<List<Product>> productsByRow) { this.productsByRow = productsByRow; } }
增值内容,请先登录
完整的SSM模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSM一整套技术栈, 从无到有涵盖全部126个知识点,560个开发步骤, 充实SSM项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service; import java.util.List; import com.how2java.tmall.pojo.Category; import com.how2java.tmall.pojo.Product; public interface ProductService { void add(Product p); void delete(int id); void update(Product p); Product get(int id); List list(int cid); void setFirstProductImage(Product p); void fill(List<Category> cs); void fill(Category c); void fillByRow(List<Category> cs); }
步骤 4 :

ProductServiceImpl

edit
增值内容,请先登录
完整的SSM模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSM一整套技术栈, 从无到有涵盖全部126个知识点,560个开发步骤, 充实SSM项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service.impl; import com.how2java.tmall.mapper.ProductMapper; import com.how2java.tmall.pojo.Category; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.pojo.ProductExample; import com.how2java.tmall.pojo.ProductImage; import com.how2java.tmall.service.CategoryService; import com.how2java.tmall.service.ProductImageService; import com.how2java.tmall.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class ProductServiceImpl implements ProductService { @Autowired ProductMapper productMapper; @Autowired CategoryService categoryService; @Autowired ProductImageService productImageService; @Override public void add(Product p) { productMapper.insert(p); } @Override public void delete(int id) { productMapper.deleteByPrimaryKey(id); } @Override public void update(Product p) { productMapper.updateByPrimaryKeySelective(p); } @Override public Product get(int id) { Product p = productMapper.selectByPrimaryKey(id); setFirstProductImage(p); setCategory(p); return p; } public void setCategory(List<Product> ps){ for (Product p : ps) setCategory(p); } public void setCategory(Product p){ int cid = p.getCid(); Category c = categoryService.get(cid); p.setCategory(c); } @Override public List list(int cid) { ProductExample example = new ProductExample(); example.createCriteria().andCidEqualTo(cid); example.setOrderByClause("id desc"); List result = productMapper.selectByExample(example); setCategory(result); setFirstProductImage(result); return result; } @Override public void setFirstProductImage(Product p) { List<ProductImage> pis = productImageService.list(p.getId(), ProductImageService.type_single); if (!pis.isEmpty()) { ProductImage pi = pis.get(0); p.setFirstProductImage(pi); } } @Override public void fill(List<Category> cs) { for (Category c : cs) { fill(c); } } @Override public void fill(Category c) { List<Product> ps = list(c.getId()); c.setProducts(ps); } @Override public void fillByRow(List<Category> cs) { int productNumberEachRow = 8; for (Category c : cs) { List<Product> products = c.getProducts(); List<List<Product>> productsByRow = new ArrayList<>(); for (int i = 0; i < products.size(); i+=productNumberEachRow) { int size = i+productNumberEachRow; size= size>products.size()?products.size():size; List<Product> productsOfEachRow =products.subList(i, size); productsByRow.add(productsOfEachRow); } c.setProductsByRow(productsByRow); } } public void setFirstProductImage(List<Product> ps) { for (Product p : ps) { setFirstProductImage(p); } } }
增值内容,请先登录
完整的SSM模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSM一整套技术栈, 从无到有涵盖全部126个知识点,560个开发步骤, 充实SSM项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.controller; import com.how2java.tmall.pojo.Category; import com.how2java.tmall.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; @Controller @RequestMapping("") public class ForeController { @Autowired CategoryService categoryService; @Autowired ProductService productService; @Autowired UserService userService; @Autowired ProductImageService productImageService; @Autowired PropertyValueService propertyValueService; @Autowired OrderService orderService; @Autowired OrderItemService orderItemService; @RequestMapping("forehome") public String home(Model model) { List<Category> cs= categoryService.list(); productService.fill(cs); productService.fillByRow(cs); model.addAttribute("cs", cs); return "fore/home"; } }
增值内容,请先登录
完整的SSM模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSM一整套技术栈, 从无到有涵盖全部126个知识点,560个开发步骤, 充实SSM项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢


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


问答区域    
2021-07-21 关于为category对象的products属性和productsByRow属性注入值的问题?
Holun

public void fill(List<Category> categorys)方法,是为查询出来的每个category对象的products属性注入值 public void fillByRow(List<Category> categorys)方法,是为查询出来的每个category对象的productsByRow属性注入值 我想知道是products和productsByRow都是category类中定义属性(也就是category对象的属性) 那为什么不将fill(List<Category> categorys)和 fillByRow(List<Category> categorys)方法在CategoryService接口中定义,然后让CategoryServiceImpl去进一步实现这两个方法。 甚至在CategoryService接口中都不用定义这两个抽象方法,直接在CategoryServiceImpl中编写fill(List<Category> categorys)和 fillByRow(List<Category> categorys)方法就可以。




1 个答案

how2j
答案时间:2021-07-27
放在ProductService 还是 CategoryService 都是说得通的,就不要纠结一定要放在哪边了。。。



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




2020-06-28 分类小标题显示不全
Fantasticlpl




鼠标移到竖分类栏时,显示的小标题不全,显示的全部是product表中subtitle的每行第一个关键词,剩下的不见了?请问为什么?数据库的导入是按照步骤来的。
加载中

							

							


1 个答案

how2j
答案时间:2020-06-29
不是不全,而是测试给的数据就这些啊,并不是演示网站上的那么多。



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





2020-02-11 一个小问题
2019-12-22 利用debug完成自己对于推荐产品集合实现的理解,大家若有不懂的可以参考一下,若我理解有错误的也可以提出。
2019-12-11 有关删除


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

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-天猫整站SSM-home方法 的提问

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

上传截图