【j2ee spring】44、巴巴运动网前台产品显示

项目结构

项目代码

界面显示

<%@ page language="java" isELIgnored="false" contentType="text/html; charset=UTF-8"    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">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>${producttype.name} 巴巴运动网</title>
    <link href="css/global/header01.css" rel="stylesheet" type="text/css" />
    <link href="css/product/list.css" rel="stylesheet" type="text/css" />
    <link href="css/global/topsell.css" rel="stylesheet" type="text/css" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="Keywords" content="${producttype.name}" />
    <META name="description" content="${producttype.note}" />
<SCRIPT type="text/javascript" src="js/xmlhttp.js"></SCRIPT>
<SCRIPT type="text/javascript" >
    function getTopSell(typeid){
        var salespromotion = document.getElementById(‘salespromotion‘);
        if(salespromotion && typeid!=""){
            salespromotion.innerHTML= "数据正在载入...";
            send_request(function(value){salespromotion.innerHTML=value},
                     "<html:rewrite action="/product/switch"/>?method=topsell&typeid="+ typeid, true);
        }
    }
    function getViewHistory(){
        var viewHistoryUI = document.getElementById(‘viewHistory‘);
        if(viewHistoryUI){
            viewHistoryUI.innerHTML= "数据正在载入...";
            send_request(function(value){viewHistoryUI.innerHTML=value},
                     "<html:rewrite action="/product/switch"/>?method=getViewHistory", true);
        }
    }
    function pageInit(){
        getTopSell("${producttype.typeid}");
        getViewHistory();
    }
</SCRIPT>
</head>

<body class="ProducTypeHome2" onload="javascript:pageInit()">
    <jsp:include page="/page/share/Head.jsp"/>
    <s:set name="out" value=‘‘ />  <!-- 这个是定义了一个变量 -->
    <s:iterator value="#request.types" var="type">
        <s:set name="out" var="out" value="#out+‘&gt;&gt;‘+#type.name+‘</a>‘" />
    </s:iterator>
    <div id="position">您如今的位置: <a href="/" name="linkHome">巴巴运动网</a>
        <s:property value="#out" escapeHtml="false" />(<s:property value="#request.pageView.totalrecords" />个)
    </div>

    <!--页面左側分类浏览部分-->
    <div class="browse_left">
         <div class="browse">
            <div class="browse_t">${producttype.name}</div>
                <h2><span class="gray">浏览下级分类</span></h2>
                <ul>
                    <s:iterator value="#request.producttype.childtypes" var="childtype">
                        <li class=‘bj_blue‘>
                            <a href="<s:url action="frontProductlist"/>?typeid=<s:property value="#childtype.typeid" />"><s:property value="#childtype.name" /></a>
                        </li>
                    </s:iterator>
                </ul>
         </div>
<DIV id="sy_biankuang">
        <DIV class="lanmu_font">最畅销${producttype.name}</DIV>
        <DIV style="PADDING-LEFT: 10px; COLOR: #333333" id="salespromotion">

        </DIV>
</DIV>
         <br/>
         <div class="browse">
              <div class="browse_t">您浏览过的商品</div>
              <ul id="viewHistory"></ul>
         </div>
    </div>
    <!--页面右側分类列表部分開始-->
    <div class="browse_right">
         <div class="select_reorder">
              <div class="reorder_l">请选择排序方式:
              <s:if test="%{‘selldesc‘ == pf.sort}"><strong><em>销量多到少</em></strong></s:if>
              <s:if test="%{‘selldesc‘ != pf.sort}">
                <a title=‘按销量降序‘ href="<s:url action="frontProductlist" />?sort=selldesc&typeid=<s:property value="#parameters.typeid" />">销量多到少</a>
              </s:if>
              |
              <s:if test="%{‘sellpricedesc‘ == pf.sort}"><strong><em>价格高到低</em></strong></s:if>
              <s:if test="%{‘sellpricedesc‘ != pf.sort}">
                <a title=‘按销量降序‘ href="<s:url action="frontProductlist" />?sort=sellpricedesc&typeid=<s:property value="#parameters.typeid" />">价格高到低</a>
              </s:if>
              |
              <s:if test="%{‘sellpriceasc‘ == pf.sort}"><strong><em>价格低到低</em></strong></s:if>
              <s:if test="%{‘sellpriceasc‘ != pf.sort}">
                <a title=‘价格低到高‘ href="<s:url action="frontProductlist" />?sort=sellpriceasc&typeid=<s:property value="#parameters.typeid" />">价格低到高</a>
              </s:if>
              |
              <s:if test="%{pf.sort == ‘‘}"><strong><em>近期上架时间</em></strong></s:if>
              <s:if test="%{pf.sort != ‘‘}">
                <a title=‘价格低到高‘ href="<s:url action="frontProductlist" />?sort=&typeid=<s:property value="#parameters.typeid" />">近期上架时间</a>
              </s:if>
         </div>

              <div class="reorder_r">显示方式:
                  <s:if test="##">
                    <strong><em>图文版</em></strong>
                  </s:if>
                  <s:if test="##">
                    <a href="<html:rewrite action="/product/list/display"/>?sort=${param.sort}&typeid=${param.typeid}&sex=${param.sex }&brandid=${param.brandid}&style=imagetext">图文版</a>
                  </s:if> |
                  <s:if test="##">
                    <a href="<html:rewrite action="/product/list/display"/>?sort=${param.sort}&typeid=${param.typeid}&sex=${param.sex }&brandid=${param.brandid}&style=image">图片版</a>
                  </s:if>
                  <s:if test="##">
                    <strong><em>图片版</em></strong>
                  </s:if>
              </div>
            <div class="emptybox"></div>
             <div class="brand">
                <div class="FindByHint">按<strong>品牌</strong>选择:</div>
                <ul class="CategoryListTableLevel1">
                    <s:iterator value="#request.brands" var="brand">
                        <li>
                            <a href="<s:url action="frontProductlist" />?

sort=<s:property value="#request.sort" />
                                                &brandid=<s:property value="#brand.code" />&typeid=<s:property value="#parameters.typeid" />">
                                                <s:property value="#brand.name" />
                            </a>
                        </li>
                    </s:iterator>
                </ul>
             </div>
             <div class="SubCategoryBox">
                <div class="FindByHint">按<strong>男女款</strong>选择:</div>
                <ul class="CategoryListTableLevel1">
                <li>
                    <a  href="<s:url action="frontProductlist"/>?sort=sellpriceasc&
                                typeid=<s:property value="#parameters.typeid" />&
                                sex=MAN&brandid=<s:property value="#brand.code" />">男款</a>
                </li>
                <li>
                    <a  href="<s:url action="frontProductlist"/>?sort=sellpriceasc&
                                typeid=<s:property value="#parameters.typeid" />&
                                sex=WOMEN&brandid=<s:property value="#brand.code" />">女款</a>
                </li>
                <li>
                    <a  href="<s:url action="frontProductlist"/>?sort=sellpriceasc&typeid=<s:property value="#parameters.typeid" />&
                                sex=NONE&brandid=<s:property value="#brand.code" />">男女均可</a>
                </li>
                <li>
                    <a class="red" href="<s:url action="frontProductlist"/>?sort=sellpriceasc&typeid=<s:property value="#parameters.typeid" />">全部</a>
                </li>
                </ul>
             </div>
        </div>
         <div id="divNaviTop" class="number">
              <div class="number_l">下面<span class=‘number_white‘><s:property value="#request.pageView.totalrecords" /></span>条结果按<span class="number_white">
                <s:if test="%{‘selldesc‘ == #request.sort}">
                    销量多到少
                </s:if>
                <s:elseif test="%{‘sellpricedesc‘ == #request.sort}">
                    价格高到低
                </s:elseif>
                <s:elseif test="%{‘sellpriceasc‘ == #request.sort}">
                    价格低到高
                </s:elseif>
                <s:else>
                    近期上架时间
                </s:else>
              </span>排列,显示方式是<span class="number_white"><s:if test="##">图文版</s:if><s:if test="##">图片版</s:if></span> 每页显示<span class="number_white">${pageView.maxresult}</span>条</div>
              <div class="turnpage">
                <div><em>第${pageView.currentpage}页</em></div>
              </div>
         </div>

    <div class=‘goods_pic‘>
<!---------------------------LOOP START------------------------------>
<s:iterator value="#request.pageView.records" var="entry">
    <div class="detail">
        <div class="goods" style="cursor:hand;background:url(<s:iterator value="#entry.styles" var="pic"><s:property value="#pic.image140FullPath" /> </s:iterator>) center center no-repeat">
            <a href="/html/product/<s:property value="#entry.type.typeid" />/<s:property value="#entry.id" />.shtml" target="_blank">
                <img src="../../../images/global/product_blank.gif" alt="<s:property value="#entry.name" />" width="140" height="168"  border="0"/>
             </a>
         </div>
        <h2>
            <a href="/html/product/<s:property value="#entry.type.typeid" />/<s:property value="#entry.id" />.shtml" target="_blank" title="<s:property value="#entry.name" />}"><s:property value="#entry.name" /></a>
        </h2>
        <div class="save_number">
            <s>¥<s:property value="#entry.marketprice" /></s> 
            <strong><em>¥<s:property value="#entry.sellprice" /></em></strong> 节省:<s:property value="#entry.savedPrice" />
        </div>
        <div class="an_img" align="center">
            <a href="/html/product/<s:property value="#entry.type.typeid" />/<s:property value="#entry.id" />.shtml">
                <img src=‘images/sale.gif‘ width=‘84‘ height=‘24‘ border=‘0‘ class=‘a_1‘ />
            </a>
        </div>
     </div>
</s:iterator>
<!----------------------LOOP END------------------------------->
        <div class=‘emptybox‘></div>
    </div>
         <div id="divNaviBottom" class="page_number">
         <div class="turnpage turnpage_bottom">
        <s:iterator begin="%{#request.pageView.pageindex.startpage}" end="%{#request.pageView.pageindex.endpage}" var="index">
            <s:if test="#request.pageView.currentpage == #index"><div class=‘red‘>第${index}页 </div></s:if>
            <s:else>
                <div class="page">
                    <a href="<s:url action="frontProductlist" />?page=${index }&typeid=<s:property value="#parameters.typeid" />&sort=<s:property value="#parameters.sort" />" onclick="topage(${index })" class="a03">第${index}页 </a>
                </div>
            </s:else>
        </s:iterator>
        <div>&nbsp;&nbsp;</div>
        跳转到第
        <select name="selectPage" class="kuang" onchange="javascript:topage(this.value)">
            <s:iterator begin="1" end="#request.pageView.totalpage" var="index">
                <option value="${index }" &amp;amp;amp;amp;amp;lt;s:if test="%{#request.pageView.currentpage == #index}" >selected="selected"</s:if> >
                    <s:property value="#index" />
                </option>
            </s:iterator>
        </Select>
        页
        <input type="hidden" id="typeid" value="<s:property value="#parameters.typeid" />" />
        <input type="hidden" id="sort" value="<s:property value="#parameters.sort" />" />
        <SCRIPT type="text/javascript">

            function topage(pagenum)
            {
                var typeid=document.getElementById("typeid").value;
                var sort=document.getElementById("sort").value;
                window.location.href="<s:url action=‘frontProductlist‘ />?

sort="+ sort +"&page="+ pagenum +"&typeid="+ typeid;
            }
        </SCRIPT>
         </div>
         </div>
    </div>
    <jsp:include page="/page/share/Foot.jsp" />
</body>
</html>

后台代码展示

/**
 * 功能:这个是前台产品展示的控制器
 * 时间:2015年6月3日09:46:50
 * 文件:FrontProductAction.java
 * 作者:cutter_point
 */
package com.cutter_point.web.action.product;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.cutter_point.bean.PageView;
import com.cutter_point.bean.QueryResult;
import com.cutter_point.bean.product.ProductInfo;
import com.cutter_point.bean.product.ProductStyle;
import com.cutter_point.bean.product.ProductType;
import com.cutter_point.bean.product.Sex;
import com.cutter_point.service.product.ProductInfoService;
import com.cutter_point.service.product.ProductTypeService;
import com.cutter_point.web.formbean.product.FrontProductForm;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

@Controller
@Scope("prototype")     //这个表示每次訪问的时候都会有一个新的对象创建
public class FrontProductAction extends ActionSupport implements ServletRequestAware, ModelDriven<FrontProductForm>
{
    private static final long serialVersionUID = -568904658537583015L;
    @Resource
    private ProductInfoService productInfoService;  //业务注入
    @Resource
    private ProductTypeService productTypeService;  //业务注入
    private HttpServletRequest request;
    private FrontProductForm pf;    //一个表单bean

    @Override
    public String execute() throws Exception
    {
        PageView<ProductInfo> pageview = new PageView<ProductInfo>(2, pf.getPage());
        pageview.setPagecode(20);   //这个是为了设置页码数
        int firstindex = (pageview.getCurrentpage() - 1) * pageview.getMaxresult(); //得到从哪个開始索引的值
        //按什么排序的选择
        LinkedHashMap<String, String> orderby = this.buildOrder(pf.getSort());  //获取到对应的排序规则
        //运行的SQL语句
        StringBuilder sql = new StringBuilder(" o.visible=?");  //用来组装的SQL语句
        List<Object> params = new ArrayList<Object>();      //用来给?

赋值的參数列表
        params.add(true);   //仅仅有显示为产品上架的才会被显示

        //推断是不是有typeid
        if(pf.getTypeid() != null)
        {
            sql.append(" and o.typeid=?");
            params.add(pf.getTypeid()); //查询出对应的类别id号作为条件
        }

        //这里先推断一下品牌的id是不是为空
        if(pf.getBrandid() != null && !"".equals(pf.getBrandid().trim()))
        {
            //这里组装一条语句
            sql.append(" and o.brandid=?");
            params.add(pf.getBrandid());    //查询出对应的品牌id号作为条件
        }

        //推断选择的性别要求
        if(pf.getSex() != null)
        {
            //获取性别属性
            String sex = pf.getSex().trim();
            if("NONE".equalsIgnoreCase(sex) || "MAN".equalsIgnoreCase(sex) || "WOMEN".equalsIgnoreCase(sex))
            {
                sql.append(" and o.sexrequest=?");
                params.add(Sex.valueOf(sex).toString());    //依据String获取对应的值
            }
        }

        //获取全部的子类。包括子类的子类
        List<Integer> typeids = new ArrayList<Integer>();
        //首先把顶级要查询的父类放进去
        //推断是不是有typeid
        if(pf.getTypeid() != null)
        {
            typeids.add(pf.getTypeid());
            this.getTypeids(typeids, new Integer[]{pf.getTypeid()});
            //吧查询出来的全部类型号查询出来
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < typeids.size(); ++i)
            {
                sb.append("?

,");
            }
            //去掉逗号
            sb.deleteCharAt(sb.length() - 1);
            sql.append("and o.typeid in (" + sb.toString() + ")");
            params.addAll(typeids);  //传入參数
        }

        QueryResult<ProductInfo> qr = null;
        //依据对应的条件取得对应的数据
        qr = productInfoService.getScrollData(ProductInfo.class, firstindex, pageview.getMaxresult(), sql.toString(), params.toArray(), orderby);
        pageview.setQueryResult(qr);

        //显示对应产品的样式的时候,我们要显示一个
        for(ProductInfo product : pageview.getRecords())
        {
            Set<ProductStyle> styles = new HashSet<ProductStyle>();
            //然后把取出来的产品的样式一个一个地取出来
            for(ProductStyle style : product.getStyles())
            {
                //取出一个能够上架的样式就跳出循环
                if(style.getVisible())
                {
                    styles.add(style); //给要显示的样式加入一个对象
                    break;
                }
            }
            product.setStyles(styles); //每一个产品的样式给设置出来
        }

        request.setAttribute("sort", pf.getSort());
        request.setAttribute("pageView", pageview);
        if(pf.getTypeid() != null)
        {
            Integer[] ids = new Integer[typeids.size()];    //吧类型转换为数组
            for(int i = 0; i < typeids.size(); ++i)
            {
                ids[i] = typeids.get(i);
            }
            request.setAttribute("brands", productInfoService.getBrandsByProductTypeid(ids));   //查询出对应的品牌
            ProductType type = productTypeService.find(ProductType.class, pf.getTypeid());  //查找到当前的类别
            //页面循环显示导航路径
            List<ProductType> types = new ArrayList<ProductType>();
            types.add(type);    //吧这个类别加入到这个路径中
            ProductType parenttype = type.getParent();  //获取父类类型
            //吧全部的父类,父类的父类的父类。。。全部放到list作为路径
            while(parenttype  != null)
            {
                types.add(parenttype);
                parenttype = parenttype.getParent();
            }
            request.setAttribute("producttype", type);  //查询出对应的当前类别
            request.setAttribute("types", types);   //查询出对应的序列
        }
        return "list";
    }

    /**
     * 查询出全部的子类id(子类的子类全部获取)
     * @param outtypeids    这个是查询出来的全部的有关id号
     * @param typeids   父类id
     * @return
     */
    public void getTypeids(List<Integer> outtypeids, Integer[] typeids)
    {
        //首先查出父类id的全部子类id
        List<Integer> subtypeids = productTypeService.getSubTypeid(typeids);
//      //吧自身也包括进去
//      List<Integer> typeidss = Arrays.asList(typeids);
//      outtypeids.addAll(typeidss);    //吧自己也加进去
        //仅仅要查出来的子类id号不为空说明子类可能还有子类,一直把最后一层之类查询不出来为止
        if(subtypeids != null && subtypeids.size() > 0)
        {
            //吧查询出来的子类放出到參数中存放
            outtypeids.addAll(subtypeids);
            //然后把查询出来的子类当做父类进行查询
            Integer[] ids = new Integer[subtypeids.size()];
            for(int i = 0; i < subtypeids.size(); ++i)
            {
                ids[i] = Integer.valueOf(subtypeids.get(i).toString());
            }
            getTypeids(outtypeids, ids);    //吧List转化为数组
        }
    }

    /**
     * 组装排序规则
     * @param orderfiled
     * @return
     */
    private LinkedHashMap<String, String> buildOrder(String orderfiled)
    {
        LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
        //推断字符串前面的 是不是以字符串orderfiled结尾.
        if("selldesc".equals(orderfiled))
        {
            orderby.put("sellcount", "desc");   //这个是以销量来排序
        }
        else if("sellpricedesc".equals(orderfiled)) //这个是以销售价格的高低来排序
        {
            orderby.put("sellprice", "desc");
        }
        else if("sellpriceasc".equals(orderfiled)) //这个是以价格的低高来排序
        {
            orderby.put("sellprice", "asc");
        }
        else    //以产品的上架时间来推断
        {
            orderby.put("createdate", "desc");
        }
        return orderby; //返回对应的排序列表
    }

    public ProductInfoService getProductInfoService() {
        return productInfoService;
    }

    public void setProductInfoService(ProductInfoService productInfoService) {
        this.productInfoService = productInfoService;
    }

    public FrontProductForm getPf() {
        return pf;
    }

    public void setPf(FrontProductForm pf) {
        this.pf = pf;
    }

    @Override
    public FrontProductForm getModel()
    {
        //从页面获取表单值
        if(pf == null)
            pf = new FrontProductForm();

        return pf;
    }

    @Override
    public void setServletRequest(HttpServletRequest arg0)
    {
        this.request = arg0;
    }

}

前台页面显示

这个页面都是我们最后做好的页面,这里可能有一点点和上面的代码对不上,可是基本一样了

总结

这个功能的实现代码并不复杂。代码量也不多。可是最麻烦的时候我们的页面代码非常难调试。或许是我对CSS和HTML更重要的一点我认为是我对struts2的标签库的不熟悉

原文地址:https://www.cnblogs.com/llguanli/p/8455304.html

时间: 2024-11-13 08:15:22

【j2ee spring】44、巴巴运动网前台产品显示的相关文章

【j2ee spring】34、巴巴运动网的产品类别管理

巴巴运动网的产品类别管理 1.项目图解 这次我们做的是产品管理的功能,也就是增删改查... 2.首先我们引入相应的jar包 3.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 这里我们先把上节的有几个工具类补足上来 PageIndex.java /** * 功能:存放第一个页码和最后一个页码 * 时间:2015年5月19日09:06:26 * 文件:PageIndex.java

【j2ee spring】38、巴巴运动网的产品文件的上传

巴巴运动网的产品文件的上传 1.项目图解 2.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 上传文件的接口类与实现 /** * 功能:这个是文件业务处理的功能接口 * 时间:2015年5月25日09:29:56 * 文件:UploadFileService.java * 作者:cutter_point */ package com.cutter_point.service.u

【j2ee spring】35、巴巴运动网的产品类别管理(2)

巴巴运动网的产品类别管理 1.项目图解 这次我们做的是产品管理的功能,也就是增删改查... 2.首先我们引入相应的jar包 3.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 好的,这里我们开始对产品类型进行修改和查询操作 ProductTypeAction.java /** * 功能:这个是实现产品类和web层的交互 * 时间:2015年5月16日10:50:36 * 文件:

【j2ee spring】32、巴巴运动网的产品类别页面

巴巴运动网的产品类别页面 1.项目图解 这里面好多页面都是错的,只是个模板,暂时用不上,需要的代码我会全部贴出来,最后做完的时候我会把项目发上来 2.首先我们引入相应的jar包 3.首先我们组装整个页面的整体格局 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 top.jsp <%@ page contentType="text/html;charset=UTF-8"%> <%@

【j2ee spring】41、巴巴运动网的产品查询

巴巴运动网的产品查询 1.项目图解 2.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 产品的查询界面query_product.jsp <%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" %> <%@ taglib uri="/strut

【j2ee spring】36、巴巴运动网的产品品牌图片

巴巴运动网的产品品牌图片 1.项目图解 这里做的是图片的存储和显示 2.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 BrandAction.java /** * 功能:这个是实现品牌类和web层的交互 * 时间:2015年5月23日10:31:07 * 文件:BrandAction.java * 作者:cutter_point */ packagecom.cutter_po

【j2ee spring】40、巴巴运动网的产品添加修改选择

巴巴运动网的产品添加修改选择 1.项目图解 2.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 产品的添加界面add_product.jsp <%@ page contentType="text/html;charset=utf-8" %> <%@ taglib uri="/struts-tags" prefix="s&

【j2ee spring】33、巴巴运动网的产品类别展示

巴巴运动网的产品类别展示 1.项目图解 这里面好多页面都是错的,只是个模板,暂时用不上,需要的代码我会全部贴出来,最后做完的时候我会把项目发上来 2.首先我们引入相应的jar包 3.首先我们组装整个页面的整体格局 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 ProductTypeAction.java /** * 功能:这个是实现产品类和web层的交互 * 时间:2015年5月16日10:50:36 *

【j2ee spring】39、巴巴运动网的产品信息

巴巴运动网的产品信息 1.项目图解 2.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 产品显示的接口实现 /** * 功能:这个是产品业务的接口 * 文件:ProductInfoService.java * 时间:2015年5月22日16:48:25 * 作者:cutter_point */ package com.cutter_point.service.product;