• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

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

项目实战 Geekerstar 11个月前 (05-26) 608次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

原理分析

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

具体实现

复制我们的工具类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<Category> 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中取出分类信息了

源码下载

下载地址

导航目录

查看导航
丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Javaweb网上商城项目实战(15)实现首页的分类查询-版本3
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00