【项目实战】---首页一级分类的显示

简介: 在前面的博文中,小编主要简单的介绍了用户模块中的验证码程序是如何实现的,今天继续来介绍我们的项目,今天小编主要简单的介绍一下如何实现首页的一级分类的显示,比如小伙伴现在看的CSDN,如下所示,她的一级分类: 无论我们点击哪个页面,这些分类总是会出现,那么她到底是如何实现的呢?今天这篇博文,小编结合自己现在正在做的这个项目,总结一下如何实现首页一级分类的显示,希望可以帮助到有需要的小伙伴们,不足之处,小伙伴多多指教。

在前面的博文中,小编主要简单的介绍了用户模块中的验证码程序是如何实现的,今天继续来介绍我们的项目,今天小编主要简单的介绍一下如何实现首页的一级分类的显示,比如小伙伴现在看的CSDN,如下所示,她的一级分类:


无论我们点击哪个页面,这些分类总是会出现,那么她到底是如何实现的呢?今天这篇博文,小编结合自己现在正在做的这个项目,总结一下如何实现首页一级分类的显示,希望可以帮助到有需要的小伙伴们,不足之处,小伙伴多多指教。
第一步、我们需要建立一个分类的表,以及向表中插入相关的数据,建表语句,如下所示:

CREATE TABLE `category` (  
  `cid` int(11) NOT NULL AUTO_INCREMENT,  
  `cname` varchar(255) DEFAULT NULL,  
  PRIMARY KEY (`cid`)  
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;


接着,我们在表里插入几条数据,小伙伴们,可以根据自己的情况,insert几条数据即可。
第二步、新建包action、dao、service、vo,如下所示:

第三步、在vo包里面新建类Category,编写相关代码,并且生成get和set方法,代码如下所示:

package cn.itcast.shop.category.vo;  
  
public class Category {  
      
    private Integer cid;  
    private String cname;  
    public Integer getCid() {  
        return cid;  
    }  
    public void setCid(Integer cid) {  
        this.cid = cid;  
    }  
    public String getCname() {  
        return cname;  
    }  
    public void setCname(String cname) {  
        this.cname = cname;  
    }  
      
  
}  


接着,在vo中新建一个Category.hbm.xml,编写相关代码,那么.hbm.xml作用是什么?实体与表的映射关系通过xml来描述的文件,在hibernate.cfg.xml中管理,在项目启动的守候加载到内存,hbm指的是hibernate的映射文件,映射文件也称为映射文档,用于向hibernate提供关于将对象持久化到关系数据库中的信息,持久化对象的映射定义可全部存储在同一个映射文件中,也可将每个对象的映射定义存储在独立的文件中,后一种方法较好,因为将大量持久化类的映射定义存储在一个文件中比较麻烦,建议采用每个类一个文件的方法来组织映射文档.使用多个映射文件还有一个优点:如果将所有映射定义都存储到一个文件中,将难以调试和隔离特定类的映射定义错误.映射文件的命名规则是,使用持久化类的类名,并使用扩展名hbm.xml.映射文件需要在hibernate.cfg.xml中注册,最好与领域对象类放在同一目录中,这样修改起来很方便.xxx.hbm.xml文件是hibernate中的映射文件,hbm表示是hibernate的关系映射文件,当然啦,我们也可以不这样写,只不过这样写规范一点。代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
      
<hibernate-mapping>  
    <class name="cn.itcast.shop.category.vo.Category" table="category">  
        <id name="cid">  
            <generator class="native"/>  
        </id>  
        <property name="cname"/>  
          
    </class>  
</hibernate-mapping>  


不要忘记了,需要在applicationContext中进行配置哦,如下所示:

<!-- 配置hibernate的映射文件 -->  
        <property name="mappingResources">  
            <list>  
                <value>cn/itcast/shop/category/vo/Category.hbm.xml</value>                
            </list>  
        </property>  


第三步、在action、dao、service中新建类,如下所示:


第四步、接着在applicationContext中配置,service和dao都交给spring进行管理,代码如下所示:

<!-- Service的配置 ===============================-->  
<bean id="categoryService" class="cn.itcast.shop.category.service.CategoryService">  
    <property name="categoryDao" ref="categoryDao"/>  
</bean>  
<!-- Dao的配置=================================== -->  
  
<bean id="categoryDao" class="cn.itcast.shop.category.dao.CategoryDao">  
    <property name="sessionFactory" ref="sessionFactory"/>  
</bean>  


第五步、接着,在service中注入Dao,如下所示:

package cn.itcast.shop.category.service;  
  
import java.util.List;  
  
import cn.itcast.shop.category.dao.CategoryDao;  
import cn.itcast.shop.category.vo.Category;  
  
/** 
 * 一级分类的业务层对象 
 * @author 丁国华 
 * 
 */  
public class CategoryService {  
      
    //注入CategoryDao  
    private CategoryDao categoryDao;  
  
    public void setCategoryDao(CategoryDao categoryDao) {  
        this.categoryDao = categoryDao;  
    }  
  
}  
第六步、我们开始编写业务逻辑代码,我们知道首页一级分类,所以应该是在IndexAction中注入一级分类的service,并提供set方法,代码如下所示:
package cn.itcast.shop.index.action;

import java.util.List;

import javax.swing.plaf.basic.BasicSliderUI.ActionScroller;

import cn.itcast.shop.category.service.CategoryService;
import cn.itcast.shop.category.vo.Category;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 首页访问的Action
 * @author 丁国华
 *
 */

public class IndexAction extends ActionSupport {
	
	//注入一级分类的Service
	private CategoryService categoryService;
	
	public void setCategoryService(CategoryService categoryService) {
		this.categoryService = categoryService;
	}

}
第七步、接着,我们进行查询,在service中有一个查询的方法:

/**
 * 执行的访问首页的方法
 */
public String execute(){
	//查询所有一级分类集合
	List<Category> cList = categoryService.findAll();
	return "index";
}
接着,我们在categoryService中晚上这个方法,如下所示:

package cn.itcast.shop.category.service;

import java.util.List;

import cn.itcast.shop.category.dao.CategoryDao;
import cn.itcast.shop.category.vo.Category;

/**
 * 一级分类的业务层对象
 * @author 丁国华
 *
 */
public class CategoryService {
	
	//注入CategoryDao
	private CategoryDao categoryDao;

	public void setCategoryDao(CategoryDao categoryDao) {
		this.categoryDao = categoryDao;
	}

	//业务层查询所有一级分类的方法
	public List<Category> findAll() {
		return categoryDao.findAll();
	}
	
	
	

}
第八步、接着,编写dao里面的方法,代码如下所示:

package cn.itcast.shop.category.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.itcast.shop.category.vo.Category;

/**
 * 一级分类的持久层对象
 * @author Flower
 *
 */

public class CategoryDao extends HibernateDaoSupport {
	
	
	//Dao层的查询所有一级分类的方法
	public List<Category> findAll() {
		String hql ="from Category";
		List<Category> list = this.getHibernateTemplate().find(hql);
		return list;
		
	}

}
接着,我们需要将一级分类的数据显示到页面,怎么显示呢?我们可以通过值栈,我们可以把数据存到值栈里面,然后使用迭代标签,把数据显示到页面,这是一种方法,我们知道,一级分类呢,在每一个页面上都有,我们可以把他存入到session里面,后续的查询,我们可以不通过数据库进行查询,编写代码:
package cn.itcast.shop.index.action;

import java.util.List;

import javax.swing.plaf.basic.BasicSliderUI.ActionScroller;

import cn.itcast.shop.category.service.CategoryService;
import cn.itcast.shop.category.vo.Category;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 首页访问的Action
 * @author Flower
 *
 */

public class IndexAction extends ActionSupport {
	
	//注入一级分类的Service
	private CategoryService categoryService;
	
	public void setCategoryService(CategoryService categoryService) {
		this.categoryService = categoryService;
	}


	/**
	 * 执行的访问首页的方法
	 */
	public String execute(){
		//查询所有一级分类集合
		List<Category> cList = categoryService.findAll();
		//将一级分类存到session里面
		ActionContext.getContext().getSession().put("cList",cList);
		return "index";
	}

}
接着,我们接着,在jsp页面进行迭代,如下所示:
<div class="span24">
	<ul class="mainNav">
		<li><a href="${ pageContext.request.contextPath }/index.action">首页</a> |</li>
		<s:iterator var="c" value="#session.cList">
			<li><a href="./蔬菜分类.htm"><s:property value="#c.cname"/></a> |</li>
		</s:iterator>

	</ul>
</div>
最后,我们来看一下效果,如下所示:

小编寄语:该博文,小编主要介绍了如何在项目中实现首页一级分类的显示,总的老说,实现思路是这个样子的:
1、首先,我们需要创建表,以及在表之中插入数据。
2、新建包action、dao、service、vo。
3、在vo里面新建类Category,编写代码,两个实体Integer cid和String cname,生成get和set方法。
4、在vo中新建一个Category.hbm.xml编写相关代码。
5、在applicationContext中配置hibernate映射,映射搞定。
6、分别在action、dao、service中新建类。
7、在applicationContext中进行配置,也就是service和dao都交给spring进行管理。
8、在service中注入dao,在applicationContext中进行注入,注入sessionFactory。
9、在service和dao中进行相应的配置。
好了,今天的分享到这里就要和小伙伴们说再见了,有没有舍不得呢,在下篇博文中,小编将继续介绍项目的相关知识,敬请期待。

目录
相关文章
|
PyTorch 算法框架/工具
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
1242 0
|
存储 算法 Java
操作系统之存储管理——FIFO算法和LRU算法
存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
1081 0
操作系统之存储管理——FIFO算法和LRU算法
|
存储 自然语言处理 运维
服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
这里就平时经常用到的服务发现的产品进行特性的对比,总的来看,目前Consul 自身功能,和 spring cloud 对其集成的支持都相对较为完善,而且运维的复杂度较为简单,Eureka 设计上比较符合场景,但还需持续的完善。
5628 0
|
12月前
|
存储 数据采集 数据处理
Pandas中批量转换object至float的高效方法
在数据分析中,常需将Pandas DataFrame中的object类型列转换为float类型以进行数值计算。本文介绍如何使用`pd.to_numeric`函数高效转换,并处理非数字值,包括用0或平均值填充NaN值的方法。
664 1
|
12月前
|
存储 安全 网络安全
云计算与网络安全:云服务、网络安全、信息安全的技术探讨
在当今数字化时代,云计算和网络安全已成为企业和个人用户不可或缺的技术。本文将深入探讨云计算的基本概念、云服务类型、网络安全的重要性、信息安全的关键要素以及如何确保数据安全。通过分析这些技术领域的发展趋势和挑战,我们将为读者提供关于如何在云环境中保护数据安全的实用建议。
241 10
|
12月前
|
人工智能 弹性计算 Kubernetes
【云故事探索】NO.10:厦门立马耀的数字化转型之路
厦门立马耀网络科技有限公司在数字化转型中,凭借敏锐的市场洞察和技术创新,将云计算深度融合于业务。其品牌“蝉妈妈”为中小企业提供全方位数字营销解决方案,成为行业标杆。面对快速变化的市场需求,公司通过与阿里云合作,构建高可靠性计算平台,提升效率,并利用AI技术赋能客户,推动业务多元化发展,展现了云计算在企业成长中的巨大潜力。
|
Java 应用服务中间件 开发者
深入探索并实践Spring Boot框架
深入探索并实践Spring Boot框架
193 2
|
传感器 监控 安全
智能家居系统:物联网技术的应用与挑战
在这篇文章中,我们将深入探讨智能家居系统背后的技术原理、实际应用以及面临的主要挑战。通过分析物联网技术如何实现家居自动化,并结合具体案例,本文旨在提供对智能家居发展现状和未来趋势的全面理解。
|
安全 中间件 C++
【C++运算符重载】运算符重载的艺术与实践:何时使用以及使用示例
【C++运算符重载】运算符重载的艺术与实践:何时使用以及使用示例
321 5
|
项目管理
Maven的配置和使用
一. 配置镜像加速 1.直接在项目中的pom文件中指定 aLiYun https://maven.