1. SSH网上商城项目--首页上的一级分类查询

该项目是学习传智的项目视频总结,谢谢!

1.  创建一级分类的表

2.  建包及其相应的类

category.action /service /dao /vo

vo: 创建实体对象Category,两个字段,cid 和cname

映射文件Category.hbm.xml:作用是从数据库取出数据并附给实体对象;

以下为映射文件的约束条件

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

以为为映射文件的映射写法:name对应的是Category类所在的位置,table对应的是数据库内category表;表内id为cid,增加方式为native,对应的属性名为cname;

<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>

注:此处不能用properties,不然cname没数据查询出来

整体映射文件如下:

<?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.xml上配置Hibernate映射文件,如下

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

3. 分别在各自的包内创建CategoryAction,CategoryService,CategoryDao类

之后交给Spring管理,即需在applicationContext.xml上配置,如下

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

4. 对service ,dao配置

在Dao层注入sessionFactory,则需要CategoryDao继承HibernateDaoSupport

public class CategoryDao extends HibernateDaoSupport{

}

在Service层注入dao,如下,区别目前常见的注解方式注入@AutoWire

public class CategoryService {
	//注入CategoryDao
	private CategoryDao categoryDao;

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

以上配置完毕,则可以编写业务逻辑了

5. 因为在首页看到一级分类的变化,为此需要在IndexAction中注入一级分类的service

遵循MVC分层的概念的书写代码dao--service--action

dao层代码如下

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

sevcie层代码如下:

public class CategoryService {
	//注入CategoryDao
	private CategoryDao categoryDao;

	public void setCategoryDao(CategoryDao categoryDao) {
		this.categoryDao = categoryDao;
	}
	
	//查询所有一级分类
	public List<Category> findAll(){
		List<Category> list = categoryDao.findAll();
		return list;
	}

}

Action层代码如下

因为一级分类在每个页面都会拥有,为此不需要将数值放入值栈内,可以放置在session内

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";
	}
	
	
}

 因为注入categorySevice,同样的IndexAction需要交给Spring 管理,为此需要修改appllicationContext.xml配置

<!-- 首页访问的Action -->
	<bean id="indexAction" class="cn.itcast.shop.index.action.IndexAction" scope="prototype">
		<property name="categoryService" ref="categoryService"></property>
	</bean>

 

修改页面index,因为将首页公用部分已经提取出来,为此需要在公共页menu.jsp更改

更改之前

<ul class="mainNav">
		<li><a href="./index.htm">首页</a> |</li>
		<li><a href="./蔬菜分类.htm">定制套餐</a> |</li>
		<li><a>安全频道</a> |</li>
		<li><a>商城卡</a> |</li>
		<li><a>蔬菜基地</a> |</li>
		<li><a>节气养生</a> |</li>
		<li><a>便民服务</a> |</li>

	</ul>

 

更改之后

<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>

 

知识点分析:

1.<a href="${pageContext.request.contextPath}/index.action">首页</a>相当于访问了以下链接

http://localhost:8080/shop/index.action

2.<s:iterator var="c" value="#session.cList">
        <li><a href="./蔬菜分类.htm"><s:property value="#c.cname"/> </a> |</li>
        </s:iterator>

value="#session.cList"为取session的内存储的值方法

<s:iterator>为遍历集合内的值并放在var="c"内,最后取出value="#c.cname"进行前端展示

 

写得比较笼统,到时候再仔细完善!

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值