JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
- Java后端 学习路线 笔记汇总表【黑马程序员】
- JavaWeb黑马旅游网-学习笔记01【准备工作】
- JavaWeb黑马旅游网-学习笔记02【注册功能】
- JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】
- JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】
- JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
- JavaWeb黑马旅游网-学习笔记06【旅游线路分页展示分页展示】
- JavaWeb黑马旅游网-学习笔记07【旅游线路查询】
- JavaWeb黑马旅游网-学习笔记08【旅游线路详情】
- JavaWeb黑马旅游网-学习笔记09【旅游线路收藏】
- 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【分类数据展示功能】相关推荐
- JavaWeb黑马旅游网-学习笔记09【旅游线路收藏】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记08【旅游线路详情】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记06【旅游线路分页展示分页展示】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记02【注册功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记01【准备工作】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记10【项目代码】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb黑马旅游网-学习笔记07【旅游线路查询】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
最新文章
- 思科谈OpenDaylight
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170401
- matlab行程编码,报告论文:游程(行程)长度编码matlab(或者C++)实现
- int型 判断奇偶_XSS(Reflected) 反射型跨站攻击
- springmvc在启动工程的时候就访问数据库,加载一些共同的数据
- iptables学习笔记:端口转发命令优化
- SpringBoot拦截器配置
- 【超参数寻优】交叉验证(Cross Validation)超参数寻优的python实现:单一参数寻优
- php carbon,laravel Carbon函数
- nxlog windows安装部署
- 如何在线免费将caj转换Word格式
- linux 内存取证_内存取证工具volatility
- 常见光纤连接头 ST、SC、FC、LC
- RAB与RB的关系详解
- 医学统计分析:心电图智能诊病
- 软件测试培训班靠谱吗?一般多少钱?
- 【python】openpyxl常用方法
- 腾讯企业邮箱免费注册及登录方法
- sourceTree使用说明(四)
- JWT的初步了解以及session、cookie机制
热门文章
- php codecept,Yii2 codecept unit 类找不到
- Twipstopixels java_17.9.3 与设备无关的绘制(4)
- 二十二、面试必备:final、finally、finalize有什么不同?
- 十五、深入Python输入和输出
- 多篇顶会看个体因果推断(ITE)的前世今生
- 复旦大学肖仰华教授:知识图谱与认知智能 | 附PPT下载
- Java使用正则表达式去掉小数类型字符串多余的.与0
- 前后端分离系统使用Nginx代理https地址
- 崩坏3服务器维护多久,崩坏35月28日停服维护多久?4.0版本更新内容汇总[图]
- python怎么玩pdf_如何使用Python玩转PDF各种骚操作?