第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 登录的验证码及自动登录及记住用户: