1. 程式人生 > >Ajax非同步載入資料及Redis快取

Ajax非同步載入資料及Redis快取

 

 

針對網頁分類條目的動態載入,圖為頁面的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);