最新公告
  • 新注册用户请前往个人中心绑定邮箱以便接收相关凭证邮件!!!点击前往个人中心
  • Javaweb网上商城项目实战(15)实现首页的分类查询-版本3

    原理分析

    上一节我们实现的版本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 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中取出分类信息了

    源码下载

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

    导航目录

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

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » Javaweb网上商城项目实战(15)实现首页的分类查询-版本3

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 159会员总数(位)
    • 3736资源总数(个)
    • 1本周发布(个)
    • 0 今日发布(个)
    • 405稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级