A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 我是楠楠 于 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口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马