JavaWeb - 仿小米商场(4):首页线路分类展示
1 功能描述
接上篇JavaWeb-仿小米商场(3):登录与退出本篇博客将分析和实现旅游线路分类内容的查询和展示。此功能旨在控制 banner 顶部的展示内容。如以下H5页面所示:
2 功能分析
2.1 功能逻辑抽象
分类展示功能在逻辑上并不复杂:每当需要加载 /<header>
标签中的内容时,都会向后端提交一个 GET 请求来获取分类数据内容。后端在收到请求后查询数据库并以 json 形式返回展示内容。
查询旅游线路分类内的功能需要面向数据库中的另一张表 tab_goods_type,为了区分不同类型的数据查询业务以及代码的维护性和扩展性。在开发时基于三层架构体系建立对应的 GoodsTypeServlet 类、GoodsTypeService 接口和实现类、GoodsTypeDao 接口和实现类。
3 代码实现
3.1 业务流程描述
3.2 Servlet
3.1.1 Servlet
在 GoodsTypeServlett 类中定义查询所有线路分类内容的主体逻辑
@WebServlet(value = "/goodType.do")
public class GoodsTypeServlet extends BaseServlet {
private ResultData resultData = new ResultData();
/**
* 获取所有商品分类,返回json数据
*
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
public String goodsTypeAjax(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
IGoodsTypeService service = new GoodsTypeServiceImpl();
resultData.setFlag(false);
List<GoodsType> list = service.getGoodsTypeByParent();
if (list != null && list.size() >= 1) {
System.out.println(list);
resultData.setFlag(true);
resultData.setData(list);
}
String json = JSON.toJSONString(resultData);
System.out.println(json);
resp.setContentType("application/json;charset=utf-8");
return json;
}
}
3.1.2 Service
在GoodsTypeServicel 类中定义getGoodsTypeByParent() 方法,定义商品分类内容的具体查询业务逻辑
public class GoodsTypeServiceImpl implements IGoodsTypeService {
private IGoodsTypeDao goodsTypeDao = new GoodsTypeDaoImpl();
//.......
@Override
//封装的查询数据的方法 根据sql语句查询不同的数据
public List<GoodsType> getGoodsTypeByParent() {
List<GoodsType> allDatas = goodsTypeDao.getAllDatas();
System.out.println(allDatas);
List<GoodsType> arr = new ArrayList<>();
if (allDatas != null && allDatas.size() >= 1) {
for (GoodsType gt : allDatas) {
if (gt.getParent() == 0) {
//从总的分类数据中做筛选,只提取级别为零的分类数据
arr.add(gt);