商城之商品分类

其实商品分类只与商品有关系,所以它也是整个项目中最简单的一个。

 用户在进入主页时,需要将数据库中的商品分类加载到页面上显示,所涉及到的SQL语句也只有查询而已。但这里有个知识点就是在查询时用到了缓存。

 因为商品分类一般情况下时不会变的,不需要每次进主页时都去数据库查询,可以使用缓存将第一次查询到的数据存下来,以后

直接取缓存即可。

 缓存技术常用的有以下几种:

 1、EHCache:它是Hibernate框架中使用的缓存技术,用作二级缓存。也是我们在这里用到的。

2、Memecache:只支持内存缓存

3、Redis:一个缓存服务器,也是我们以后在工作中经常会用到的缓存技术。

缓存这里会用到几种元素过期算法:

 LRU:最近最少使用,先判断是否是最近,再判断是否是最少使用的。也是一种常用的算法。

LFU:最少使用

FIFO:先进先出

  简单介绍一下这里用到的EHCache:

 常用API:

 核心类:CacheManager

读取配置文件:create()

获取缓存区:getCache()

  获取缓存中的list:get()

  获取缓存中的数据:getObejct()

  把一个元素存到缓存中:put()

配置文件:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">

    <diskStore path="C:/ehcache"/>

	<cache
	 name="categoryCache"//缓存区名称
            maxElementsInMemory="10000"//元素的总个数
            eternal="false"//是否常驻内存
            timeToIdleSeconds="120"//上面选否是才会触发
            timeToLiveSeconds="120"//缓存存在的时间
            overflowToDisk="true"//是否存到硬盘
            maxElementsOnDisk="10000000"
            diskPersistent="false"//服务器重启后是否数据是否生效
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"//元素过期使用的算法
            />
</ehcache>
具体的代码:

 // 读取配置文件
	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();	
 }
 以上是对一个缓存技术做的简单的总结,但缓存也被称为nosql,就是存在缓存里的一般不会存在数据库,存在数据库里的

一般不会存在缓存里。所以这里没有选择这样做。

 另一种方式是,将查询出的数据存在session域中,再次使用时从session域中获取,也可以达到节省资源的目的。所以一般

做法是在过滤其中查询出所有商品分类,存到session中,页面展示时直接获取session中的数据即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Django实现网上商城的左侧垂直商品分类菜单,可以按照以下步骤进行操作: 1. 创建商品分类模型类:在Django的models.py文件创建一个商品分类模型类,例如: ``` from django.db import models class Category(models.Model): name = models.CharField(max_length=100) # 其他字段... def __str__(self): return self.name ``` 2. 创建商品分类视图函数:在Django的views.py文件创建一个商品分类视图函数,该函数从数据库获取所有的商品分类信息,并传递给模板文件,例如: ``` from django.shortcuts import render from .models import Category def category_menu(request): categories = Category.objects.all() return render(request, 'menu.html', {'categories': categories}) ``` 3. 创建模板文件:在Django的templates目录下创建一个名为menu.html的模板文件,该文件包含左侧垂直商品分类菜单的HTML代码,例如: ``` <div class="menu"> <ul> {% for category in categories %} <li><a href="#">{{ category.name }}</a></li> {% endfor %} </ul> </div> ``` 4. 创建URL映射:在Django的urls.py文件创建一个URL映射,将对应的URL请求映射到商品分类视图函数上,例如: ```python from django.urls import path from .views import category_menu urlpatterns = [ path('menu/', category_menu, name='category_menu'), # 其他URL映射... ] ``` 以上就是用Django实现网上商城左侧垂直商品分类菜单的代码实现。其,通过创建商品分类模型类存储商品分类信息,使用商品分类视图函数获取数据库商品分类数据,并通过模板文件展示左侧垂直的商品分类菜单。最后,创建URL映射将对应的URL请求映射到商品分类视图函数上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值