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

在前面的博文中,小编主要简单的介绍了用户模块中的验证码程序是如何实现的,今天继续来介绍我们的项目,今天小编主要简单的介绍一下如何实现首页的一级分类的显示,比如小伙伴现在看的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中进行相应的配置。
好了,今天的分享到这里就要和小伙伴们说再见了,有没有舍不得呢,在下篇博文中,小编将继续介绍项目的相关知识,敬请期待。

©️2020 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值