how2j.cn

步骤 1 : 明确需求,首页需要什么数据?   
步骤 2 : Category   
步骤 3 : ProductService   
步骤 4 : ProductServiceImpl   
步骤 5 : ForeAction.home()方法   

步骤 1 :

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

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
明确需求,首页需要什么数据?
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
Category
package com.how2java.tmall.pojo; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; @Entity @Table(name = "category") public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") int id; String name; @Transient List<Product> products; @Transient List<List<Product>> productsByRow; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Category [id=" + id + ", name=" + name + "]"; } 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; } }
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service; import java.util.List; import com.how2java.tmall.pojo.Category; public interface ProductService extends BaseService { public void fill(List<Category> categorys); public void fill(Category category); public void fillByRow(List<Category> categorys); }
package com.how2java.tmall.service;

import java.util.List;

import com.how2java.tmall.pojo.Category;

public interface ProductService extends BaseService {
	public void fill(List<Category> categorys);
	public void fill(Category category);
	public void fillByRow(List<Category> categorys);
}
步骤 4 :

ProductServiceImpl

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service.impl; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.how2java.tmall.pojo.Category; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.service.ProductImageService; import com.how2java.tmall.service.ProductService; @Service public class ProductServiceImpl extends BaseServiceImpl implements ProductService { @Autowired ProductImageService productImageService; public void fill(List<Category> categorys) { for (Category category : categorys) { fill(category); } } @Override public void fillByRow(List<Category> categorys) { int productNumberEachRow = 8; for (Category category : categorys) { List<Product> products = category.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); } category.setProductsByRow(productsByRow); } } @Override public void fill(Category category) { List<Product> products= listByParent(category); for (Product product : products) productImageService.setFirstProdutImage(product); category.setProducts(products); } }
步骤 5 :

ForeAction.home()方法

edit
增值内容,请先登录
完整的SSH模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE,SSH一整套技术栈, 从无到有涵盖全部133个知识点,571个开发步骤, 充实SSH项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.action; import org.apache.struts2.convention.annotation.Action; public class ForeAction extends Action4Result { @Action("forehome") public String home() { categorys = categoryService.list(); productService.fill(categorys); productService.fillByRow(categorys); return "home.jsp"; } }
package com.how2java.tmall.action;

import org.apache.struts2.convention.annotation.Action;

public class ForeAction extends Action4Result {
	
	@Action("forehome")
	public String home() {
		categorys = categoryService.list();
		productService.fill(categorys);
		productService.fillByRow(categorys);
		return "home.jsp";
	}
}


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


问答区域    
2019-04-10 不知道是否有理解错,还请指正
sharpo




打上了注释
@Override
    public void fillByRow(List<Category> categorys) {
    	//每个产品集合显示8个产品
        int productNumberEachRow = 8;
        //对该产品类别集合进行操作
        for (Category category : categorys) {
        	//获得该种类下的产品集合
            List<Product> products =  category.getProducts();
            //新建集合,用于存放多个产品集合
            List<List<Product>> productsByRow =  new ArrayList<>();
            //按照8个为一行
            for (int i = 0; i < products.size(); i+=productNumberEachRow) {
            	//获取每个产品集合(加起来)该显示的产品数量
                int size = i+productNumberEachRow;
                //如果size大于某种类下的产品集合的大小,显示数量就采用产品集合内产品的数量,否则采用size
                size= size>products.size()?products.size():size;
                //每个种类下的产品集合的显示数量为8个,通过截取子集合,每显示8个换行,每一行都是一个子集合
                List<Product> productsOfEachRow =products.subList(i, size);
                //将子集合放进一个存放集合的集合中
                productsByRow.add(productsOfEachRow);
            }
            //种类获取集合集
            category.setProductsByRow(productsByRow);
        }
    }

							


3 个答案

Soo2
答案时间:2019-08-19
6666666666666有大佬的感觉真好

renzhichu0
答案时间:2019-07-15
解释的很好,6666666

how2j
答案时间:2019-04-11
学的很细致,一定会消化的很好,加油!



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









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

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

上传截图