1、封装分页PageBean
package cn.xdy.shop.util;
import java.util.List;
public class PageBean<T> {
private int page;//当前页数
private int totalCount;//总记录数
private int totalPage;//总页数
private int limit;//每页显示的记录数
private List<T> list;//每页显示数据的集合
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
2、menu.jsp
<s:iterator var="c" value="#session.cList">
<li><a href="${pageContext.request.contextPath }/product_findByCid?cid=<s:property value="#c.cid"/>&page=1"><s:property value="#c.cname"/></a>|</li>
</s:iterator>
3、ProductAction
package cn.xdy.shop.product.action;
import cn.xdy.shop.product.service.ProductService;
import cn.xdy.shop.product.vo.Product;
import cn.xdy.shop.util.PageBean;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class ProductAction extends ActionSupport implements ModelDriven<Product>{
private ProductService productService;
private Product product = new Product();
private int page;//当前页数
private int cid;//接收分类cid
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public void setPage(int page) {
this.page = page;
}
public void setProductService(ProductService productService) {
this.productService = productService;
}
public Product getModel() {
return product;
}
public String findByPid(){
product = productService.findByPid(product.getPid());
return "findByPid";
}
/**
* 根据分类ID查询所有
* @return
*/
public String findByCid(){
//因为IndexAction中查询了一级分类存入session中,所以此处不再查询,页面上直接从session中取即可。
PageBean pageBean = productService.findByPageCid(cid,page);
ActionContext.getContext().getValueStack().set("pageBean", pageBean);
return "findByCid";
}
}
4、ProductService
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;
import cn.xdy.shop.util.PageBean;
@Transactional
public class ProductService {
private ProductDao productDao;
public void setProductDao(ProductDao productDao) {
this.productDao = productDao;
}
/**
* 查询最热门商品
* @return
*/
public List<Product> findHot() {
return productDao.findHot();
}
/**
* 查询最新商品
* @return
*/
public List<Product> findNew() {
return productDao.findNew();
}
/**
* 根据pid查询商品信息
* @param pid
* @return
*/
public Product findByPid(Integer pid) {
return productDao.findByPid(pid);
}
/**
* 根据一级分类的cid带有分页查询商品
* @param cid
* @param page
* @return
*/
public PageBean findByPageCid(int cid, int page) {
PageBean<Product> pageBean = new PageBean<Product>();
//设置当前页数
pageBean.setPage(page);
//设置每页显示记录数
int limit = 16;
pageBean.setLimit(limit);
//设置总记录数
int totalCount = 0;
totalCount = productDao.findCountCid(cid);
pageBean.setTotalCount(totalCount);
//设置总页数
int totalPage = 0;
if(totalCount%limit==0){
totalPage = totalCount/limit;
}else{
totalPage = totalCount/limit+1;
}
pageBean.setTotalPage(totalPage);
//每页显示的数据集合
int begin = (page-1)*limit;
List<Product> list = productDao.findByPageCid(cid,begin,limit);
pageBean.setList(list);
return pageBean;
}
}
5、ProductDao
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;
import cn.xdy.shop.util.PageHibernateCallback;
public class ProductDao extends HibernateDaoSupport{
/**
* 查询最热门商品
* @return
*/
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;
}
/**
* 查询最新商品
* @return
*/
public List<Product> findNew() {
DetachedCriteria criteria = DetachedCriteria.forClass(Product.class);
criteria.addOrder(Order.desc("pdate"));
List<Product> list = this.getHibernateTemplate().findByCriteria(criteria, 0, 10);
return list;
}
/**
* 根据ID查询商品
* @param pid
* @return
*/
public Product findByPid(Integer pid) {
return this.getHibernateTemplate().get(Product.class, pid);
}
/**
* 根据分类ID查询个数
* @param cid
* @return
*/
public int findCountCid(int cid) {
String hql = "select count(*) from Product p where p.categorySecond.category.cid=?";
List<Long> list = this.getHibernateTemplate().find(hql, cid);
if(list!=null && list.size()>0){
return list.get(0).intValue();
}
return 0;
}
/**
* 根据分类ID查询带有分页的商品的集合
* @param cid
* @param begin
* @param limit
* @return
*/
public List<Product> findByPageCid(int cid, int begin, int limit) {
String hql = "select p from Product p join p.categorySecond cs join cs.category c where c.cid=?";
List<Product> list = this.getHibernateTemplate().execute(new PageHibernateCallback<Product>(hql, new Object[]{cid}, begin, limit));
return list;
}
}
6、ProductList.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0048)http://localhost:8080/mango/product/list/1.jhtml -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>星辰网上商城</title>
<link href="${pageContext.request.contextPath}/css/common.css" rel="stylesheet" type="text/css"/>
<link href="${pageContext.request.contextPath}/css/product.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="container header">
<div class="span5">
<div class="logo">
<a href="http://localhost:8080/mango/">
<img src="${pageContext.request.contextPath}/image/r___________renleipic_01/logo.gif" alt="星辰商城">
</a>
</div>
</div>
<div class="span9">
<div class="headerAd">
<img src="${pageContext.request.contextPath}/image/header.jpg" width="320" height="50" alt="正品保障" title="正品保障">
</div> </div>
<%@include file="menu.jsp" %>
</div>
<div class="container productList">
<div class="span6">
<div class="hotProductCategory">
<s:iterator var="c" value="#session.cList">
<dl>
<dt>
<a href="${pageContext.request.contextPath}/image/蔬菜 - Powered By Mango Team.htm"><s:property value="#c.cname"/></a>
</dt>
<s:iterator var="cs" value="#c.categorySeconds">
<dd>
<a ><s:property value="#cs.csname"/></a>
</dd>
</s:iterator>
</dl>
</s:iterator>
</div>
</div>
<div class="span18 last">
<form id="productForm" action="${pageContext.request.contextPath}/image/蔬菜 - Powered By Mango Team.htm" method="get">
<div id="result" class="result table clearfix">
<ul>
<s:iterator var="p" value="pageBean.list">
<li>
<a href="./京华商城分页面.htm">
<img src="${pageContext.request.contextPath}/<s:property value="#p.image"/>" width="170" height="170" style="display: inline-block;">
<span style='color:green'>
<s:property value="#p.pname"/>
</span>
<span class="price">
商城价: ¥<s:property value="#p.shop_price"/>
</span>
</a>
</li>
</s:iterator>
</ul>
</div>
<div class="pagination">
<span>第<s:property value="pageBean.page"/>/<s:property value="pageBean.totalPage"/>页</span>
<s:if test="pageBean.page!=1">
<a href="${pageContext.request.contextPath }/product_findByCid.action?cid=<s:property value="cid"/>&page=1" class="firstPage"> </a>
<a href="${pageContext.request.contextPath }/product_findByCid.action?cid=<s:property value="cid"/>&page=<s:property value="pageBean.page-1"/>" class="previousPage"> </a>
</s:if>
<s:iterator var="i" begin="1" end="pageBean.totalPage">
<s:if test="pageBean.page != #i">
<a href="${pageContext.request.contextPath }/product_findByCid.action?cid=<s:property value="cid"/>&page=<s:property value="#i"/>"><s:property value="#i"/></a>
</s:if>
<s:else>
<span class="currentPage"><s:property value="#i"/></span>
</s:else>
</s:iterator>
<s:if test="pageBean.page!=pageBean.totalPage">
<a class="nextPage" href="${pageContext.request.contextPath }/product_findByCid.action?cid=<s:property value="cid"/>&page=<s:property value="pageBean.page+1"/>"> </a>
<a class="lastPage" href="${pageContext.request.contextPath }/product_findByCid.action?cid=<s:property value="cid"/>&page=<s:property value="pageBean.totalPage"/>"> </a>
</s:if>
</div>
</form>
</div>
</div>
<div class="container footer">
<div class="span24">
<div class="footerAd">
<img src="${pageContext.request.contextPath}/image/footer.jpg" width="950" height="52" alt="我们的优势" title="我们的优势">
</div> </div>
<div class="span24">
<ul class="bottomNav">
<li>
<a >关于我们</a>
|
</li>
<li>
<a>联系我们</a>
|
</li>
<li>
<a >诚聘英才</a>
|
</li>
<li>
<a >法律声明</a>
|
</li>
<li>
<a>友情链接</a>
|
</li>
<li>
<a target="_blank">支付方式</a>
|
</li>
<li>
<a target="_blank">配送方式</a>
|
</li>
<li>
<a >官网</a>
|
</li>
<li>
<a >论坛</a>
</li>
</ul>
</div>
<div class="span24">
<div class="copyright">Copyright©2005-2015 网上商城 版权所有</div>
</div>
</div>
</body></html>