第19章WEB19-网上商城实战篇 今日任务 Ø 完成分类模块的功能 Ø 完成商品模块的功能 1.1 前台分类模块的功能:1.1.1 需求:

1.1.2 分析: 使用异步的方式完成分类的加载: 1.1.3 代码实现: 在首页上添加事件: $(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;
}

1.2 前台商品信息的显示:1.2.1 首页上最新商品和热门商品的显示: 创建商品表

CREATE TABLE `product` (
  `pid` varchar(32) NOT NULL,
  `pname` varchar(50) DEFAULT NULL,
  `market_price` double DEFAULT NULL,
  `shop_price` double DEFAULT NULL,
  `pimage` varchar(200) DEFAULT NULL,
  `pdate` date DEFAULT NULL,
  `is_hot` int(11) DEFAULT NULL,
  `pdesc` varchar(255) DEFAULT NULL,
  `pflag` int(11) DEFAULT NULL,
  `cid` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`pid`),
  KEY `sfk_0001` (`cid`),
  CONSTRAINT `sfk_0001` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建相关的类:
在IndexServlet调用业务层完成查询即可:

1.2.2 显示某个分类的商品: 在首页上点击某个分类: 提交到Servlet:传递分类的ID,当前页数. 1.2.3 显示某个商品详情: 在商品列表页面上点击【某个商品】 提交到Servlet:传递一个pid. 1.2.4 登录的验证码及自动登录及记住用户: