Ajax非同步載入資料及Redis快取
阿新 • • 發佈:2019-01-03
針對網頁分類條目的動態載入,圖為頁面的Head部分。
//categoryListServlet準備分類資料 ProductService service = new ProductService(); List<Category> categoryList = service.findAllCategoryList(); response.setContentType("text/html; charset=utf-8"); Gson gson = new Gson(); String json = gson.toJson(categoryList); response.getWriter().write(json);
head.jsp非同步載入js部分:
<script type="text/javascript"> //head.jsp載入完成後,ajax非同步載入分類條 $(function(){ var content= ""; $.post( "${pageContext.request.contextPath}/categoryList", function(data){ //[{"cid":"xxx","cname":"aaa"},{"cid":"xxx","cname":"aaa"}] for(var i=0;i<data.length;i++){ content += "<li><a href='#'>"+data[i].cname+"</a></li>"; }//將拼接好的類別,寫入到頁面 $("#categoryUI").html(content); }, "json" ); }); </script>
快取邏輯:
1.查詢快取中有無分類資料
2.有,直接查詢快取;
無,則通過hibernate查詢,並新增到快取中
3.將查詢到的資料返回。
//查詢快取中有無分類資料,如果沒有查詢寫入快取 Jedis jedis = JedisPoolUtils.getJedis(); String categoryListJson = jedis.get("categoryListJson"); if(categoryListJson == null){ System.out.println("快取沒有資料 查詢資料庫"); ProductService service = new ProductService(); List<Category> categoryList = service.findAllCategoryList(); Gson gson = new Gson(); categoryListJson = gson.toJson(categoryList); jedis.set("categoryListJson", categoryListJson); } //準備分類資料 response.setContentType("text/html; charset=utf-8"); response.getWriter().write(categoryListJson);