门户首页功能

本文介绍了一个前后端交互的示例,用于展示新书上架和热销书籍。后端通过DAO方法查询数据库,获取书籍信息,再由子控制器处理请求并返回JSON数据。前端使用AJAX请求数据,并通过`single_item()`函数递归渲染书籍列表。新书上架展示6本书,热销书籍展示8本。
摘要由CSDN通过智能技术生成

一、新书上架

1.先写dao方法,将上架的书查询

//新书上架
  public List<Book> news(Book book,PageBean pageBean) throws Exception {
      String sql = "select * from t_easyui_book where state=2 order by deployTime desc";
      return super.executeQuery(sql, Book.class, pageBean);
  }

2.子控制器

public String news(HttpServletRequest req, HttpServletResponse resp) {
		try {
			List<Book> news = bookDao.news(null, null);
			ResponseUtil.writeJson(resp, news);
		} catch (Exception e) {
			e.printStackTrace();
			try {
				ResponseUtil.writeJson(resp, "2");
			} catch (JsonProcessingException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}
		return null;
	}

将查询到的集合变成json串传到前端

3.前端渲染(ajax请求)

//   上架新书
        $.ajax({
            url: '${pageContext.request.contextPath}/book.action?methodName=news',
            dataType: "json",
            data: "rows=18",
            success: function (data) {
                // data = eval(data);
                // $(".c-category").next().append("444");
                console.log(data);
                single_item($(".c-category:eq(0)"), data, 0, "");

                 debugger;
            }
        });

4.single_item()方法为样式的拼接

function single_item($node, data, level, htmlstr) {
            // debugger;
            var start = level * 6;
            htmlstr += '<div class="row">';

            for (var i = 0; i < 6; i++) {
                if (data.length == start) {
                    break;
                }
                htmlstr += '<div class="col-md-2">'
                htmlstr += '<figure class="figure">';
                htmlstr += '<img src="' + data[start].image + '" class="figure-img img-fluid rounded" alt="...">';
                htmlstr += '<figcaption class="figure-caption">';
                htmlstr += '<p>' + data[start].name + '</p>';
                htmlstr += '<i class="text-danger">' + data[start].price + '</i>';
                htmlstr += '</figcaption>';
                htmlstr += '</figure>';
                htmlstr += '</div>';
                start++;
            }
            htmlstr += '</div>';

            level++;
            if (start < data.length) {
                single_item($node, data, level, htmlstr);
            } else {
                $node.after(htmlstr);
            }
        }

使用递归的方法展示

二、热销书籍

1.dao方法

  //热门书籍
  public List<Book> hot(Book book,PageBean pageBean) throws Exception {
      String sql = "select * from t_easyui_book order by sales limit 1,8";
      return super.executeQuery(sql, Book.class, pageBean);
  }

2.子控制器内

public String hot(HttpServletRequest req, HttpServletResponse resp) {
		try {
			List<Book> hot = bookDao.hot(null, null);
			ResponseUtil.writeJson(resp, hot);
		} catch (Exception e) {
			e.printStackTrace();
			try {
				ResponseUtil.writeJson(resp, "2");
			} catch (JsonProcessingException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}
		return null;
	}

与新书上架一致

3.前端渲染

 //   热销书籍
        $.ajax({
            url: '${pageContext.request.contextPath}/book.action?methodName=hot',
            dataType: "json",
            data: "rows=8",
            success: function (data) {
                // data = eval(data);
                // $(".c-category").next().append("444");
                console.log(data);
                single_item($(".c-category:eq(1)"), data, 0, "");

                // debugger;
            }
        });

页面效果

没显示出来的是没放图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值