JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
生活随笔
收集整理的這篇文章主要介紹了
JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
- Java后端 學(xué)習(xí)路線 筆記匯總表【黑馬程序員】
目錄
26-分類數(shù)據(jù)展示功能_分析
27-分類數(shù)據(jù)展示功能_實現(xiàn)_后臺代碼
CategoryDao.java
CategoryDaoImpl.java
CategoryService.java
CategoryServlet.java
在BaseServlet中封裝了序列化json的方法
28-分類數(shù)據(jù)展示功能_實現(xiàn)_前臺代碼
29-分類數(shù)據(jù)展示功能_緩存優(yōu)化_分析
30-分類數(shù)據(jù)展示功能_緩存優(yōu)化_代碼實現(xiàn)
CategoryServiceImpl.java
26-分類數(shù)據(jù)展示功能_分析
效果:
分析:
27-分類數(shù)據(jù)展示功能_實現(xiàn)_后臺代碼
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.調(diào)用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-分類數(shù)據(jù)展示功能_實現(xiàn)_前臺代碼
hader.html加載后,發(fā)送ajax請求,請求category/findAll。
29-分類數(shù)據(jù)展示功能_緩存優(yōu)化_分析
分析發(fā)現(xiàn),分類的數(shù)據(jù)在每一次頁面加載后 都會重新請求數(shù)據(jù)庫來加載,對數(shù)據(jù)庫的壓力比較大,而且分類的數(shù)據(jù)不會經(jīng)常產(chǎn)生變化,所以可以使用redis來緩存這個數(shù)據(jù)。
分析:
30-分類數(shù)據(jù)展示功能_緩存優(yōu)化_代碼實現(xiàn)
期望 數(shù)據(jù)中存儲的順序 就是 將來展示的順序,使用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中的分?jǐn)?shù)(cid)和值(cname)Set<Tuple> categorys = jedis.zrangeWithScores("category", 0, -1);List<Category> cs = null;//2.判斷查詢的集合是否為空if (categorys == null || categorys.size() == 0) {System.out.println("從數(shù)據(jù)庫查詢...");//3.如果為空,需要從數(shù)據(jù)庫查詢,在將數(shù)據(jù)存入redis//3.1 從數(shù)據(jù)庫查詢cs = categoryDao.findAll();//3.2 將集合數(shù)據(jù)存儲到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的數(shù)據(jù)存入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;} }總結(jié)
以上是生活随笔為你收集整理的JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础day05 作业解析【1
- 下一篇: Java项目 常用包的命名及理解【dao