7.前台商品类型导航栏功能
采用异步读取数据(使用gson将集合转换json数据),并使用redis缓存技术实现
该功能需要启动redis-server.exe服务器。
关键技术:
(后台)
// 处理ajax
public void findAllCategory(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 转成json格式list对应json格式[{"":""},{"":""},{"":""}] map
// object对应json格式{"":"","":""}
// 方式1 Gson
// Gson gson = new Gson();
// String json_list = gson.toJson(list);
// System.out.println(json_list);
// 方式2 Jsonlib
// JsonArray JsonObject
// 获取redis连接
Jedis jedis = JedisPoolUtils.getJedis();
// 获取json_list
String json_list = jedis.get("json_list");
System.out.println(json_list);
if (json_list == null) {
List<Category> list = cs.findAllCategories();
json_list = JSONArray.fromObject(list).toString();
// 缓存json_list
jedis.set("json_list", json_list);
// del删除
// jedis.del("json_list");
}
response.getWriter().println(json_list);
}
(前台)
<script type="text/javascript">
$(function(){
$.ajax({
url:"${pageContext.request.contextPath}/category?method=getAllCategory",
type:"post",
dataType:"json",
success:function(data){
var str = "";
$.each(data, function(i, n) {
str += "<li><a href='${pageContext.request.contextPath}/product?method=getCategoryProduct&&cid="+n.cid+"'>"
+ n.cname + "</a></li>";
$("#ul").html(str);
});
},
error:function(error){
alert(status.status);
}
});
});
</script>