黑马程序员技术交流社区

标题: 【郑州校区】网上商城实战篇之前台分类模块的功能 [打印本页]

作者: 我是楠楠    时间: 2018-7-3 14:24
标题: 【郑州校区】网上商城实战篇之前台分类模块的功能
本帖最后由 我是楠楠 于 2018-7-4 17:24 编辑

【郑州校区】网上商城实战篇之前台分类模块的功能

1.1.1 需求:
1.1.2 分析:
使用异步的方式完成分类的加载:
1.1.3 代码实现:
[AppleScript] 纯文本查看 复制代码
在首页上添加事件:

$(function(){

    异步加载分类的数据;

});



创建分类的表:

CREATE TABLE `category` (

  `cid` varchar(32) NOT NULL,

  `cname` varchar(20) DEFAULT NULL,

  PRIMARY KEY (`cid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建分类的相关的类:



相关代码的实现:异步加载分类,显示JSON数据:



每个页面上都由分类的信息,每次进行页面跳转的时候都需要去连接数据库进行查询:这样效率很低.需要优化当前程序!!!

* 将数据存入到缓存中,每次获取的时候从缓存中进行获取.

    * EHCache        :Hibernate框架 二级缓存使用

    * Memcached

    * Redis

* 使用缓存的技术优化程序!!!

    * 引入ehcache的包:

    * 代码实现:

@Override

public List<Category> findAll()throws SQLException {

/*CategoryDao categoryDao = new CategoryDaoImpl();

return categoryDao.findAll();*/

/**

* 使用缓存优化程序,先从缓存中获取数据

*   * 获取到:直接返回

*   * 获取不到:查询数据库,将记录存入到缓存中.

*/

// 读取配置文件

CacheManager cacheManager = CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));

// 从配置文件中获取名称为categoryCache缓存区

Cache cache = cacheManager.getCache("categoryCache");

// 判断缓存中是否有list集合:

Element element = cache.get("list");

List<Category> list = null;

if(element == null){

// 缓存中没有数据

System.out.println("缓存中没有数据 ,查询数据库=====");


CategoryDao categoryDao = new CategoryDaoImpl();

list = categoryDao.findAll();

element = new Element("list",list);

cache.put(element);

}else{

// 缓存中已经存在数据

System.out.println("缓存中有数据 ,没有查询数据库=====");

list = (List<Category>)element.getObjectValue();


}

return list;

}
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2