Javaweb网上商城项目实战(15)实现首页的分类查询-版本3

原理分析

上一节我们实现的版本2仍然有一个弊端,如果用户频繁的访问包含分类信息的页面,每次都要去DB中取获取分类信息,非常影响性能。接下来我们完成最终的版本3,使用redis解决这个问题。

Javaweb网上商城项目实战(15)实现首页的分类查询-版本3

具体实现

复制我们的工具类JedisUtils.java到utils包下,项目所有的jar包在项目最初开始的时候我们已经提前导入了,这里就不导入了。

JedisUtils的代码如下

package com.geekerstar.store.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisUtils {
	//创建连接池
	private static JedisPoolConfig config;
	private static JedisPool pool;
	
	static{
		config=new JedisPoolConfig();
		config.setMaxTotal(30);
		config.setMaxIdle(2);
		
		pool=new JedisPool(config, "127.0.0.1", 6379);
	}
	
	//获取连接的方法
	public static Jedis getJedis(){
		return pool.getResource();
	}
	
	//释放连接
	public static void closeJedis(Jedis j){
		j.close();
	}
}

修改CategoryServlet中的代码,加入Redis功能

package com.geekerstar.store.web.servlet;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.geekerstar.store.domain.Category;
import com.geekerstar.store.service.CategoryService;
import com.geekerstar.store.service.serviceImp.CategoryServiceImp;
import com.geekerstar.store.utils.JedisUtils;
import com.geekerstar.store.web.base.BaseServlet;
import net.sf.json.JSONArray;
import redis.clients.jedis.Jedis;

public class CategoryServlet extends BaseServlet {
	
	//findAllCats
	public String findAllCats(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		//在redis中获取全部分类信息
		Jedis jedis=JedisUtils.getJedis();
		String jsonStr=jedis.get("allCats");
		if(null==jsonStr||"".equals(jsonStr)){
			//调用业务层获取全部分类
			CategoryService CategoryService=new CategoryServiceImp();
			List list = CategoryService.getAllCats();
			//将全部分类转换为JSON格式的数据
			jsonStr=JSONArray.fromObject(list).toString();
			System.out.println(jsonStr);
			//将获取到的JSON格式的数据存入redis
			jedis.set("allCats", jsonStr);
			System.out.println("redis缓存中没有数据");
			//将全部分类信息响应到客户端
			//告诉浏览器本次响应的数据是JSON格式的字符串
			resp.setContentType("application/json;charset=utf-8");
			resp.getWriter().print(jsonStr);			
		}else{
			System.out.println("redis缓存中有数据");
			//将全部分类信息响应到客户端
			//告诉浏览器本次响应的数据是JSON格式的字符串
			resp.setContentType("application/json;charset=utf-8");
			resp.getWriter().print(jsonStr);
		}
		
		JedisUtils.closeJedis(jedis);

		return null;
	}
}

开启本地redis,运行redis-server.exe。

然后运行项目,此时就会从redis中取出分类信息了
Javaweb网上商城项目实战(15)实现首页的分类查询-版本3

源码下载

[dm href=’https://www.jikewenku.com/product/1700.html’]下载地址[/dm]

导航目录

[dm href=’https://www.jikewenku.com/project/2786.html’]查看导航[/dm]

本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » Javaweb网上商城项目实战(15)实现首页的分类查询-版本3
分享到:
赞(0)

评论抢沙发

评论前必须登录!