• Java后端 学习路线 笔记汇总表【黑马程序员】
  1. JavaWeb黑马旅游网-学习笔记01【准备工作】
  2. JavaWeb黑马旅游网-学习笔记02【注册功能】
  3. JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】
  4. JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】
  5. JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
  6. JavaWeb黑马旅游网-学习笔记06【旅游线路分页展示分页展示】
  7. JavaWeb黑马旅游网-学习笔记07【旅游线路查询】
  8. JavaWeb黑马旅游网-学习笔记08【旅游线路详情】
  9. JavaWeb黑马旅游网-学习笔记09【旅游线路收藏】
  10. JavaWeb黑马旅游网-学习笔记10【项目代码】

目录

26-分类数据展示功能_分析

27-分类数据展示功能_实现_后台代码

CategoryDao.java

CategoryDaoImpl.java

CategoryService.java

CategoryServlet.java

在BaseServlet中封装了序列化json的方法

28-分类数据展示功能_实现_前台代码

29-分类数据展示功能_缓存优化_分析

30-分类数据展示功能_缓存优化_代码实现

CategoryServiceImpl.java


26-分类数据展示功能_分析

效果:

分析:

27-分类数据展示功能_实现_后台代码

CategoryDao.java

package cn.itcast.travel.dao;import cn.itcast.travel.domain.Category;import java.util.List;public interface CategoryDao {/*** 查询所有** @return*/public List<Category> findAll();
}

CategoryDaoImpl.java

package cn.itcast.travel.dao.impl;import cn.itcast.travel.dao.CategoryDao;
import cn.itcast.travel.domain.Category;
import cn.itcast.travel.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;public class CategoryDaoImpl implements CategoryDao {private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());@Overridepublic List<Category> findAll() {String sql = "select * from tab_category";return template.query(sql, new BeanPropertyRowMapper<Category>(Category.class));}
}

CategoryService.java

package cn.itcast.travel.service;import cn.itcast.travel.domain.Category;import java.util.List;public interface CategoryService {public List<Category> findAll();
}

CategoryServlet.java

package cn.itcast.travel.web.servlet;import cn.itcast.travel.domain.Category;
import cn.itcast.travel.service.CategoryService;
import cn.itcast.travel.service.impl.CategoryServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet("/category/*")
public class CategoryServlet extends BaseServlet {private CategoryService service = new CategoryServiceImpl();/*** 查询所有** @param request* @param response* @throws ServletException* @throws IOException*/public void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.调用service查询所有List<Category> cs = service.findAll();//2.序列化json返回/* ObjectMapper mapper = new ObjectMapper();response.setContentType("application/json;charset=utf-8");mapper.writeValue(response.getOutputStream(),cs);*/writeValue(cs, response);}
}

在BaseServlet中封装了序列化json的方法

28-分类数据展示功能_实现_前台代码

hader.html加载后,发送ajax请求,请求category/findAll。

29-分类数据展示功能_缓存优化_分析

分析发现,分类的数据在每一次页面加载后 都会重新请求数据库来加载,对数据库的压力比较大,而且分类的数据不会经常产生变化,所以可以使用redis来缓存这个数据。

分析:

30-分类数据展示功能_缓存优化_代码实现

期望 数据中存储的顺序 就是 将来展示的顺序,使用redis的sortedset。

CategoryServiceImpl.java

package cn.itcast.travel.service.impl;import cn.itcast.travel.dao.CategoryDao;
import cn.itcast.travel.dao.impl.CategoryDaoImpl;
import cn.itcast.travel.domain.Category;
import cn.itcast.travel.service.CategoryService;
import cn.itcast.travel.util.JedisUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;import java.util.ArrayList;
import java.util.List;
import java.util.Set;public class CategoryServiceImpl implements CategoryService {private CategoryDao categoryDao = new CategoryDaoImpl();@Overridepublic List<Category> findAll() {//1.从redis中查询//1.1获取jedis客户端Jedis jedis = JedisUtil.getJedis();//1.2可使用sortedset排序查询//Set<String> categorys = jedis.zrange("category", 0, -1);//1.3查询sortedset中的分数(cid)和值(cname)Set<Tuple> categorys = jedis.zrangeWithScores("category", 0, -1);List<Category> cs = null;//2.判断查询的集合是否为空if (categorys == null || categorys.size() == 0) {System.out.println("从数据库查询...");//3.如果为空,需要从数据库查询,在将数据存入redis//3.1 从数据库查询cs = categoryDao.findAll();//3.2 将集合数据存储到redis中的category的keyfor (int i = 0; i < cs.size(); i++) {jedis.zadd("category", cs.get(i).getCid(), cs.get(i).getCname());}} else {System.out.println("从redis中查询...");//4.如果不为空,将set的数据存入listcs = new ArrayList<Category>();for (Tuple tuple : categorys) {Category category = new Category();category.setCname(tuple.getElement());category.setCid((int) tuple.getScore());cs.add(category);}}return cs;}
}

JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】相关推荐

  1. JavaWeb黑马旅游网-学习笔记09【旅游线路收藏】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  2. JavaWeb黑马旅游网-学习笔记08【旅游线路详情】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  3. JavaWeb黑马旅游网-学习笔记06【旅游线路分页展示分页展示】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  4. JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  5. JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  6. JavaWeb黑马旅游网-学习笔记02【注册功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  7. JavaWeb黑马旅游网-学习笔记01【准备工作】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  8. JavaWeb黑马旅游网-学习笔记10【项目代码】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  9. JavaWeb黑马旅游网-学习笔记07【旅游线路查询】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

最新文章

  1. 思科谈OpenDaylight
  2. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170401
  3. matlab行程编码,报告论文:游程(行程)长度编码matlab(或者C++)实现
  4. int型 判断奇偶_XSS(Reflected) 反射型跨站攻击
  5. springmvc在启动工程的时候就访问数据库,加载一些共同的数据
  6. iptables学习笔记:端口转发命令优化
  7. SpringBoot拦截器配置
  8. 【超参数寻优】交叉验证(Cross Validation)超参数寻优的python实现:单一参数寻优
  9. php carbon,laravel Carbon函数
  10. nxlog windows安装部署
  11. 如何在线免费将caj转换Word格式
  12. linux 内存取证_内存取证工具volatility
  13. 常见光纤连接头 ST、SC、FC、LC
  14. RAB与RB的关系详解
  15. 医学统计分析:心电图智能诊病
  16. 软件测试培训班靠谱吗?一般多少钱?
  17. 【python】openpyxl常用方法
  18. 腾讯企业邮箱免费注册及登录方法
  19. sourceTree使用说明(四)
  20. JWT的初步了解以及session、cookie机制

热门文章

  1. php codecept,Yii2 codecept unit 类找不到
  2. Twipstopixels java_17.9.3 与设备无关的绘制(4)
  3. 二十二、面试必备:final、finally、finalize有什么不同?
  4. 十五、深入Python输入和输出
  5. 多篇顶会看个体因果推断(ITE)的前世今生
  6. 复旦大学肖仰华教授:知识图谱与认知智能 | 附PPT下载
  7. Java使用正则表达式去掉小数类型字符串多余的.与0
  8. 前后端分离系统使用Nginx代理https地址
  9. 崩坏3服务器维护多久,崩坏35月28日停服维护多久?4.0版本更新内容汇总[图]
  10. python怎么玩pdf_如何使用Python玩转PDF各种骚操作?