13.首页热门商品显示

1、建表

创建二级分类的表:
CREATE TABLE `categorysecond` (
  `csid` int(11) NOT NULL AUTO_INCREMENT,
  `csname` varchar(255) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL,
  PRIMARY KEY (`csid`),
  KEY `FK936FCAF21DB1FD15` (`cid`),
  CONSTRAINT `FK936FCAF21DB1FD15` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8;
创建商品表:
CREATE TABLE `product` (
  `pid` int(11) NOT NULL AUTO_INCREMENT,
  `pname` varchar(255) DEFAULT NULL,
  `market_price` double DEFAULT NULL,
  `shop_price` double DEFAULT NULL,
  `image` varchar(255) DEFAULT NULL,
  `num` int(11) DEFAULT NULL,
  `pdesc` varchar(255) DEFAULT NULL,
  `is_hot` int(11) DEFAULT NULL,
  `pdate` datetime DEFAULT NULL,
  `csid` int(11) DEFAULT NULL,
  PRIMARY KEY (`pid`),
  KEY `FKED8DCCEFB9B74E02` (`csid`),
  CONSTRAINT `FKED8DCCEFB9B74E02` FOREIGN KEY (`csid`) REFERENCES `categorysecond` (`csid`)
) ENGINE=InnoDB AUTO_INCREMENT=74 DEFAULT CHARSET=utf8;

2、创建包及类

Product.java

package cn.xdy.shop.product.vo;

import java.util.Date;

public class Product {
	private Integer pid;
	private String pname;
	private Double market_price;
	private Double shop_price;
	private String image;
	private String pdesc;
	private Integer is_hot;
	private Date pdate;

	// 二级分类ID
	public Integer getPid() {
		return pid;
	}

	public void setPid(Integer pid) {
		this.pid = pid;
	}

	public String getPname() {
		return pname;
	}

	public void setPname(String pname) {
		this.pname = pname;
	}

	public String getImage() {
		return image;
	}

	public void setImage(String image) {
		this.image = image;
	}

	public String getPdesc() {
		return pdesc;
	}

	public void setPdesc(String pdesc) {
		this.pdesc = pdesc;
	}

	public Double getMarket_price() {
		return market_price;
	}

	public void setMarket_price(Double market_price) {
		this.market_price = market_price;
	}

	public Double getShop_price() {
		return shop_price;
	}

	public void setShop_price(Double shop_price) {
		this.shop_price = shop_price;
	}

	public Integer getIs_hot() {
		return is_hot;
	}

	public void setIs_hot(Integer is_hot) {
		this.is_hot = is_hot;
	}

	public Date getPdate() {
		return pdate;
	}

	public void setPdate(Date pdate) {
		this.pdate = pdate;
	}

}

Product.hbm.xml

<?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.xdy.shop.product.vo.Product" table="product">
		<id name="pid">
			<generator class="native"/>
		</id>
		<property name="pname"/>
		<property name="market_price"/>
		<property name="shop_price"/>
		<property name="image"/>
		<property name="pdesc"/>
		<property name="is_hot"/>
		<property name="pdate"/>
	</class>
</hibernate-mapping>

将Product.hbm.xml加入到applicationContext.xml中

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

IndexAction.java中查询热门商品,将查询到的数据保存到值栈中。

/**
	 * 执行访问首页的方法
	 */
	public String execute() throws Exception {
		// 首页一级分类的显示
		List<Category> cList = categoryService.findAll();
		ActionContext.getContext().getSession().put("cList", cList);

		// 首页热门商品显示
		List<Product> hlist = productService.findHot();
		ActionContext.getContext().getValueStack().set("hlist", hlist);
		return "index";
	}

ProductService.java

package cn.xdy.shop.product.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cn.xdy.shop.product.dao.ProductDao;
import cn.xdy.shop.product.vo.Product;

@Transactional
public class ProductService {
	private ProductDao productDao;

	public void setProductDao(ProductDao productDao) {
		this.productDao = productDao;
	}

	public List<Product> findHot() {
		return productDao.findHot();
	}

}

ProductDao.java

package cn.xdy.shop.product.dao;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.xdy.shop.product.vo.Product;

public class ProductDao extends HibernateDaoSupport{

	public List<Product> findHot() {
		DetachedCriteria criteria = DetachedCriteria.forClass(Product.class);
		criteria.add(Restrictions.eq("is_hot", 1));
		criteria.addOrder(Order.desc("pdate"));
		List<Product> list = this.getHibernateTemplate().findByCriteria(criteria, 0, 10);
		return list;
	}

}

完成Service和Dao的配置

<bean id="productDao" class="cn.xdy.shop.product.dao.ProductDao">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
<bean id="productService" class="cn.xdy.shop.product.service.ProductService">
		<property name="productDao" ref="productDao"></property>
	</bean>

indexAction中注入productService

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

3、效果图

时间: 2024-08-06 19:44:00

13.首页热门商品显示的相关文章

Android商城开发系列(十三)—— 首页热卖商品布局实现

热卖商品布局效果如下图: 这个布局跟我们上节做的推荐是一样的,也是用LinearLayout和GridView去实现的,新建一个hot_item.xml,代码如下所示: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:ori

《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

Tomcat启动后访问首页报错 显示JSP 空指针异常

HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.serv

网购热门商品的陷阱,你躺枪了没?

去年是购买智能手机.平板电脑.玩具.电动游戏和相机的好时机,这些热门商品有着大量的网络点击率,但也有许多网络威胁被制造来针对搜索这些东西的人们.临近春节,也即将进入走亲访友的高峰期,我们列出了最受欢迎的礼物清单,并通过趋势科技主动式云端截毒服务  Smart Protection Network来加以分析,希望帮助大家筛选出可能存在的威胁. 1.智能手机.可穿戴设备和平板电脑 跟去年一样,智能手机依然是最受欢迎的产品,因此它们在今年仍然位在热门搜索排行榜的顶端.随着备受瞩目的智能手机型号推出(如

Fink| 实时热门商品

实现一个“实时热门商品”的需求,我们可以将“实时热门商品”翻译成程序员更好理解的需求:每隔5分钟输出最近一小时内点击量最多的前N个商品.将这个需求进行分解我们大概要做这么几件事情: 抽取出业务时间戳,告诉Flink框架基于业务时间做窗口 过滤出点击行为数据 按一小时的窗口大小,每5分钟统计一次,做滑动窗口聚合(Sliding Window) 按每个窗口聚合,输出每个窗口中点击量前N名的商品 public class HotItems { public static void main(Strin

14.首页点击商品显示商品详情

1.在index.jsp中传递商品id,在a标签中加入href的内容,href="${pageContext.request.contextPath }/product_findByPid.action?pid=<s:property value="#p.pid"/>" <s:iterator value="nList" var="p"> <li> <a target="_b

python爬取豆瓣首页热门栏目详细流程

记录一下爬取豆瓣热门专栏的经过,通过这篇文章,你能学会requests,HTMLParser,json的基本使用,以及爬取网页内容的基本思路. 使用模块 1,获取豆瓣首页代码:首先我们需要访问豆瓣页面,获取首页的源码.这里推荐使用第三方库:requests,相比python内置的 urllib 模块,requests使用起来更简单,功能更全面 2,对获取的代码进行解析:对于解析html代码,已经有很多功能强大的框架能使用,如Scrapy,PySpider,Beautiful Soup等,这里我们

ecshop怎么以幻灯版调用首页主广告显示

今天在做一个商品网站我使用的是一套现成的ecshop模板了,这套模板下载下来多半是可以使用的,但是我发现第一屏的首页广告一直是不显示我想了很多办法都不显示了,后来一站长告诉我如何解决,下面我就来介绍ecshop调用flash广告的实现方法. 我的默认的是index_ad.lbi模板有一个$flash变量了,但在搜索搜索没发现 <!--{foreach from=$flash name=no item=flash}--> <li class="li{$smarty.foreach

ECShop后台修改站内快讯数量及首页精品推荐等显示个数设置

这节说下ECShop两个简单的设置,第一个是首页站内快讯显示数量的修改 这个可以从后台--系统设置--商店设置--显示设置,找到"最新文章显示数量",然后修改此项的参数,就可以修改首页站内快讯的显示数量. 第二个数关于首页的精品推荐,新品上市,热卖商品 这三项的显示商品个数的设置 这个从后台--模板管理--设置模板: 找到 "精品推荐.新品上架.热卖商品"这三个,修改对应的参数即可. 今天说的这两个还是比较简单的,高手可以直接绕道. 这一节就先到这里吧.