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