1.实现修改产品样式的功能
1 /** 2 * 样式修改 3 */ 4 public ActionForward edit(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) 5 throws Exception { 6 ProductForm productForm = (ProductForm)form; 7 Style style = productStyleService.find(Style.class, productForm.getProductStyleId()); 8 style.setName(productForm.getStyleName()); 9 if(productForm.getImage()!=null&&productForm.getImage().getFileSize()>0){ 10 if(!productForm.isImageTypeValidate(productForm.getImage())){ 11 request.setAttribute("message","图片格式不正确"); 12 request.setAttribute("jump", PropertiesTool.getValue("control.product.style.list")+"?id="+productForm.getId()); 13 return mapping.findForward("message"); 14 } 15 StringBuffer fileDir = new StringBuffer("/file/product/"); 16 StringBuffer sizedFileDir = new StringBuffer("/file/product/"); 17 sizedFileDir.append(style.getProduct().getProductType().getId()+"/"+style.getProduct().getId()+"/sized"); 18 fileDir.append(style.getProduct().getProductType().getId()+"/"+style.getProduct().getId()+"/prototype"); 19 String imageRealDir = request.getSession().getServletContext().getRealPath(fileDir.toString()); 20 String sizedRealDir = request.getSession().getServletContext().getRealPath(sizedFileDir.toString()); 21 File dir = new File(imageRealDir); 22 File sizedDir = new File(sizedRealDir); 23 if(!dir.exists()) dir.mkdirs(); 24 if(!sizedDir.exists()) sizedDir.mkdirs(); 25 StringBuffer imageName = new StringBuffer(UUID.randomUUID().toString()); 26 String fileExt = productForm.getImage().getFileName().substring(productForm.getImage().getFileName().lastIndexOf('.')); 27 imageName.append(fileExt); 28 FileOutputStream outputStream = new FileOutputStream(new File(imageRealDir,imageName.toString())); 29 outputStream.write(productForm.getImage().getFileData()); 30 outputStream.close(); 31 ImageSizer.resize(new File(dir,imageName.toString()), new File(sizedDir,imageName.toString()), 140, fileExt.substring(1)); 32 style.setImagePath(fileDir.toString()+"/"+imageName); 33 } 34 productStyleService.update(style); 35 request.setAttribute("message", "修改成功!"); 36 request.setAttribute("jump", PropertiesTool.getValue("control.product.style.list")+"?id="+style.getProduct().getId()); 37 return mapping.findForward("message"); 38 }
2.实现产品样式的上下架功能
a.业务逻辑层代码
1 package cnblogs.xiaoqiu.service.product.impl; 2 3 import javax.persistence.Query; 4 5 import org.springframework.stereotype.Service; 6 import cnblogs.xiaoqiu.service.base.DAOSupport; 7 import cnblogs.xiaoqiu.service.product.ProductStyleService; 8 @Service 9 public class ProductStyleServiceImpl extends DAOSupport implements ProductStyleService { 10 11 public void setVisible(int[] productStyleIds, boolean state) { 12 if(productStyleIds!=null&&productStyleIds.length>0){ 13 StringBuffer jpql = new StringBuffer(""); 14 for(int i=0;i<productStyleIds.length;i++){ 15 jpql.append("?"+(i+2)+","); 16 } 17 jpql.deleteCharAt(jpql.length()-1); 18 Query query = entityManager.createQuery("update Style p set p.visible = ?1 where p.id in("+jpql+")"); 19 query.setParameter(1, state); 20 for(int i=0;i<productStyleIds.length;i++){ 21 query.setParameter(i+2, productStyleIds[i]); 22 } 23 query.executeUpdate(); 24 } 25 } 26 27 }
b.控制层代码
1 /** 2 * 设置某种样式的产品上架 3 */ 4 public ActionForward toShelf(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) 5 throws Exception { 6 ProductForm productForm = (ProductForm)form; 7 productStyleService.setVisible(productForm.getStyleIds(), true); 8 request.setAttribute("message", "设置成功!"); 9 request.setAttribute("jump", PropertiesTool.getValue("control.product.style.list")+"?id="+productForm.getId()); 10 return mapping.findForward("message"); 11 } 12 13 /** 14 * 设置某种样式的产品下架 15 */ 16 public ActionForward offShelf(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) 17 throws Exception { 18 ProductForm productForm = (ProductForm)form; 19 productStyleService.setVisible(productForm.getStyleIds(), false); 20 request.setAttribute("message", "设置成功!"); 21 request.setAttribute("jump", PropertiesTool.getValue("control.product.style.list")+"?id="+productForm.getId()); 22 return mapping.findForward("message"); 23 }
3.图片压缩处理的介绍
4.在产品图片管理中集成图片压缩(将图片压缩成指定大小)
1 if(productForm.getImage()!=null&&productForm.getImage().getFileSize()>0){ 2 if(!productForm.isImageTypeValidate(productForm.getImage())){ 3 request.setAttribute("message","图片格式不正确"); 4 request.setAttribute("jump", PropertiesTool.getValue("control.product.style.list")+"?id="+productForm.getId()); 5 return mapping.findForward("message"); 6 } 7 StringBuffer fileDir = new StringBuffer("/file/product/"); 8 StringBuffer sizedFileDir = new StringBuffer("/file/product/"); 9 sizedFileDir.append(style.getProduct().getProductType().getId()+"/"+style.getProduct().getId()+"/sized"); 10 fileDir.append(style.getProduct().getProductType().getId()+"/"+style.getProduct().getId()+"/prototype"); 11 String imageRealDir = request.getSession().getServletContext().getRealPath(fileDir.toString()); 12 String sizedRealDir = request.getSession().getServletContext().getRealPath(sizedFileDir.toString()); 13 File dir = new File(imageRealDir); 14 File sizedDir = new File(sizedRealDir); 15 if(!dir.exists()) dir.mkdirs(); 16 if(!sizedDir.exists()) sizedDir.mkdirs(); 17 StringBuffer imageName = new StringBuffer(UUID.randomUUID().toString()); 18 String fileExt = productForm.getImage().getFileName().substring(productForm.getImage().getFileName().lastIndexOf('.')); 19 imageName.append(fileExt); 20 FileOutputStream outputStream = new FileOutputStream(new File(imageRealDir,imageName.toString())); 21 outputStream.write(productForm.getImage().getFileData()); 22 outputStream.close(); 23 ImageSizer.resize(new File(dir,imageName.toString()), new File(sizedDir,imageName.toString()), 140, fileExt.substring(1)); 24 style.setImagePath(fileDir.toString()+"/"+imageName); 25 }
5.前台展示页面的布局与源码分析(将html页面切割成jsp页面,通过包含技术复用头尾)
a.show.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head><title>户外用品 巴巴运动网</title> 5 <link href="/css/global/header01.css" rel="stylesheet" type="text/css"> 6 <link href="/css/product/list.css" rel="stylesheet" type="text/css" /> 7 <link href="/css/global/topsell.css" rel="stylesheet" type="text/css"> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 9 <meta name="Keywords" content="户外用品"> 10 <META name="description" content="中国最大的户外用品网上商城,致力于提供最高品质,时尚的户外用品,让所有热爱生活的人们,能够享受到户外所带来的轻松、惬意和乐趣。"> 11 <SCRIPT language=JavaScript src="/js/xmlhttp.js"></SCRIPT> 12 <SCRIPT LANGUAGE="JavaScript"> 13 <!-- 14 function getTopSell(typeid){ 15 var salespromotion = document.getElementById('salespromotion'); 16 if(salespromotion && typeid!=""){ 17 salespromotion.innerHTML= "数据正在加载..."; 18 send_request(function(value){salespromotion.innerHTML=value}, "/product/top/switch.go?method=getTopSell&typeid="+ typeid, true); 19 } 20 } 21 function pageInit(){ 22 getTopSell("2"); 23 } 24 //--> 25 </SCRIPT> 26 </head> 27 <body class="ProducTypeHome2" onload="JavaScript:pageInit()"> 28 29 <jsp:include page="/head.jsp"></jsp:include> 30 31 <div id="position">您现在的位置: <a href="/" name="linkHome">巴巴运动网</a> >> 32 33 34 <em>户外用品</em>(21个) 35 </div> 36 37 <!--页面左侧分类浏览部分--> 38 <div class="browse_left"> 39 <div class="browse"> 40 <div class="browse_t">户外用品</div> 41 42 <h2><span class="gray">浏览下级分类</span></h2> 43 <ul> 44 45 <li class='bj_blue'><a href="/mapping/browse/product/list/4p1.htm">户外装备</a></li> 46 47 <li class='bj_blue'><a href="/mapping/browse/product/list/7p1.htm">滑雪装备</a></li> 48 49 <li class='bj_blue'><a href="/mapping/browse/product/list/9p1.htm">自行车</a></li> 50 51 <li class='bj_blue'><a href="/mapping/browse/product/list/8p1.htm">鞋类</a></li> 52 53 <li class='bj_blue'><a href="/mapping/browse/product/list/5p1.htm">工具/仪器/眼镜</a></li> 54 55 <li class='bj_blue'><a href="/mapping/browse/product/list/6p1.htm">攀岩</a></li> 56 57 <li class='bj_blue'><a href="/mapping/browse/product/list/10p1.htm">服装</a></li> 58 59 60 61 </ul> 62 </div> 63 <DIV id="sy_biankuang"> 64 <DIV class="lanmu_font">最畅销户外用品</DIV> 65 <DIV style="PADDING-LEFT: 10px; COLOR: #333333" id="salespromotion"> 66 <UL class="number_list"> 67 </UL> 68 </DIV> 69 </DIV> 70 <br/> 71 <div class="browse"> 72 <div class="browse_t">您浏览过的商品</div> 73 <ul> 74 </ul> 75 </div> 76 </div> 77 <!--页面右侧分类列表部分开始--> 78 <div class="browse_right"> 79 <div class="select_reorder"> 80 <div class="reorder_l">请选择排序方式: <a title='按销量降序' href="/mapping/browse/product/list/2p1.htm?showmode=&sort=selldesc&brandid=&sex=">销量多到少</a> 81 | <a title='价格高到低' href="/mapping/browse/product/list/2p1.htm?showmode=&sort=pricedesc&brandid=&sex=">价格高到低</a> 82 | <a title='价格低到高' href="/mapping/browse/product/list/2p1.htm?showmode=&sort=priceasc&brandid=&sex=">价格低到高</a> 83 | <strong><em>最近上架时间</em></strong> </div> 84 85 <div class="reorder_r">显示方式:<a href="/mapping/browse/product/list/2p1.htm?showmode=imagetext&sort=&brandid=&sex=">图文版</a> | <strong><em>图片版</em></strong></div> 86 <div class="emptybox"></div> 87 <div class="brand"> 88 <div class="FindByHint">按<strong>品牌</strong>选择:</div> 89 <ul class="CategoryListTableLevel1"> 90 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=3&sex=">喜得龙</a></li> 91 92 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=4&sex=">凯梦来/CAMPLAND</a></li> 93 94 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=5&sex=">耐克/NIKE</a></li> 95 96 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=7&sex=">卡踏那/KATANA</a></li> 97 98 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=8&sex=">思凯乐/scaler</a></li> 99 100 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=10&sex=">ZIPPO</a></li> 101 102 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=11&sex=">捷安特/Giant</a></li> 103 104 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=12&sex=">卡西欧/CASIO</a></li> 105 106 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=13&sex=">源天</a></li> 107 108 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=14&sex=">crocs</a></li> 109 110 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=15&sex=">维氏/VICTORINOX</a></li> 111 112 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=16&sex=">美洲狮</a></li> 113 114 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=17&sex=">若喜士/Roces</a></li> 115 </ul> 116 </div> 117 <div class="SubCategoryBox"> 118 <div class="FindByHint">按<strong>男女款</strong>选择:</div> 119 <ul class="CategoryListTableLevel1"> 120 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=&sex=MAN">男款</a></li> 121 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=&sex=WOMEN">女款</a></li> 122 <li><a href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=&sex=NONE">男女均可</a></li> 123 <li><a class="red" href="/mapping/browse/product/list/2p1.htm?showmode=&sort=&brandid=&sex=">全部</a></li> 124 </ul> 125 </div> 126 </div> 127 <div id="divNaviTop" class="number"> 128 <div class="number_l">以下<span class='number_white'>21</span>条结果按<span class="number_white"> 129 130 131 最近上架时间 132 133 </span>排列,显示方式是<span class="number_white">图片版</span> 每页显示<span class="number_white">18</span>条</div> 134 <div class="turnpage"> 135 <div><em>第1页</em></div> 136 </div> 137 </div> 138 139 <div class='goods_pic'> 140 <!---------------------------LOOP START------------------------------> 141 142 <div class="detail"> 143 <div class="goods" style="cursor:hand;background:url(http://image.babasport.com/product/30/140x/flash-l-003.jpg) center center no-repeat"><a href="/cache/product/105/30.shtml" target="_blank"> 144 <img src="http://image.babasport.com/global/product_blank.gif" alt="Roces Flash(闪电)1.0 Lace儿童轮滑鞋" width="140" height="168" border="0"/></a></div> 145 <h2><a href="/cache/product/105/30.shtml" target="_blank" title="Roces Flash(闪电)1.0 Lace儿童轮滑鞋">Roces Flash(闪电)1</a></h2> 146 <div class="save_number"><s>¥1100.0</s> <strong><em>¥990.0</em></strong> 节省:110.0</div> 147 <div class="an_img" align="center"><a href="/cache/product/105/30.shtml"><img src='http://image.babasport.com/sale.gif' width='84' height='24' border='0' class='a_1' /></a></div> 148 </div> 149 150 <!----------------------LOOP END-------------------------------> 151 <div class='emptybox'></div> 152 </div> 153 <div id="divNaviBottom" class="page_number"> 154 <div class="turnpage turnpage_bottom"> 155 156 157 158 <div class='red'>1</div> 159 160 <div class="page"><a href="/mapping/browse/product/list/2p2.htm?showmode=&sort=&brandid=&sex=">[2]</a></div> 161 162 163 164 <div class='line'><a href="/mapping/browse/product/list/2p2.htm?showmode=&sort=&brandid=&sex=">下一页</a></div> 165 166 <div> </div>跳转到第 167 <Select name="selectPage" class="kuang" onChange="javaScript:topage(this.value)"> 168 169 <option value="1" selected> 1 </option> 170 171 <option value="2" > 2 </option> 172 173 </Select>页 174 <SCRIPT LANGUAGE="JavaScript"> 175 <!-- 176 function topage(pagenum){ 177 window.location="/mapping/browse/product/list/2p"+pagenum+".htm?showmode=&sort=&brandid=&sex="; 178 } 179 //--> 180 </SCRIPT> 181 182 </div> 183 </div> 184 </div> 185 <jsp:include page="/foot.jsp"></jsp:include> 186 </body> 187 </html>
b.head.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <div id="Head"> 3 <div id="HeadTop"> 4 <div id="Logo"><a href="http://www.babasport.com/" target=_top><img alt=中国最大、最安全的户外用品、体育用品网上交易平台! src="http://image.babasport.com/global/logo.gif" border=0 /></a> </div> 5 <div id="HeadNavBar"> 6 <ul> 7 <li class="NoSep"><a id="MyBuyCar" href="http://www.babasport.com/mapping/shopping/cart.htm" ><font color="blue"><Strong>购物车</Strong></font></a> </li> 8 <li><a href="http://www.babasport.com/mapping/user/reg.htm" >新用户注册</a> </li> 9 <li><a href="http://www.babasport.com/mapping/user/login.htm" >用户登录</a> </li> 10 <li><a href="http://www.babasport.com/cache/help/index.shtml">帮助中心</a> </li> 11 <li class="phone">服务热线:010-64663070</li> 12 </ul> 13 </div> 14 </div> 15 <div id="ChannelMenu"> 16 <UL id="ChannelMenuItems"> 17 <LI id="MenuHome"><a href="http://www.babasport.com"><span>首页</span></a></LI> 18 <LI id="ProducType1Home"><a href="http://www.babasport.com/mapping/browse/product/list/1p1.htm"><span>瑜珈用品</span></a></LI> 19 <LI id="ProducType2Home"><a href="http://www.babasport.com/mapping/browse/product/list/2p1.htm"><span>户外用品</span></a></LI> 20 <LI id="ProducType3Home"><a href="http://www.babasport.com/mapping/browse/product/list/3p1.htm"><span>健身器材</span></a></LI> 21 <LI id="ProducType8Home"><a href="http://www.babasport.com/mapping/browse/product/list/8p1.htm"><span>运动鞋</span></a></LI> 22 <LI id="MyAccountHome"><a href="http://www.babasport.com/customer/center.go"><span>我的账户</span></a></LI> 23 </UL> 24 <!-- SearchBox --> 25 <div id="SearchBox"> 26 <div id="SearchBoxTop"> 27 <div id="SearchForm"> 28 <form action="/q" method="get" name="search" id="search"> 29 30 <span class="name">商品搜索: </span><input id="word" name="word" accesskey="s" size="50" maxlength="50" value=""/> 31 <select id="typeid" name="typeid" style="WIDTH:200px;font-size:12px;"> 32 <option value="">所有类别</option> 33 <option value="1">瑜珈用品</option> 34 <option value="2">户外用品</option> 35 <option value="3">健身器材</option> 36 <option value="96">高尔夫用品</option> 37 38 </select> 39 <input type="submit" value="搜 索" id="DoSearch"/> 40 </form> 41 </div> 42 </div> 43 <div id="HotKeywords"> 44 <ul> 45 <li><span> 46 2012年04月30日 47 您好<SCRIPT language=JavaScript src="/js/welcome.js"></SCRIPT>,欢迎来到巴巴运动网!</span></li> 48 <li>热门搜索:</li> 49 50 <li><a href="/q?word=%E5%B8%90%E7%AF%B7">帐篷</a></li> 51 <li><a href="/q?word=%E7%91%9C%E4%BC%BD%E7%90%83">瑜伽球</a></li> 52 <li><a href="/q?word=%E8%BF%9C%E9%98%B3%E7%91%9C%E4%BC%BD%E6%9C%8D">远阳瑜伽服</a></li> 53 54 </ul> 55 </div> 56 </div> 57 </div><!-- End SearchBox --> 58 </div> 59 <!-- Head End -->
c.foot.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <center> 3 <div class="publish_page_bottom" align="center"> 4 <table class="b_middle"> 5 <tr> 6 <td width="104" class="title width_1 t2"><h2>我的帐户</h2></td> 7 <td width="104" class="title"><h2>如何付款</h2></td> 8 <td width="125" class="title"><h2>配送及运费</h2></td> 9 <td width="102" class="title"><h2>办理退换货</h2></td> 10 <td width="88" class="title width_2 t3"><h2>帮助中心</h2></td> 11 </tr> 12 <tr> 13 <td class="width_1"><a href="http://www.babasport.com/cache/news/2/1.shtml" target="_blank">我的帐户自助服务</a></td> 14 <td><a href="http://www.babasport.com/cache/news/3/4.shtml" target="_blank">货到付款常见问题</a></td> 15 <td><a href="http://www.babasport.com/cache/news/6/9.shtml" target="_blank">配送范围时间及费用</a></td> 16 <td><a href="http://www.babasport.com/cache/news/8/12.shtml" target="_blank">退换货原则</a></td> 17 <td class="width_2"><a href="http://www.babasport.com/mapping/user/forgetpassword.htm" target="_blank">找回密码</a></td> 18 </tr> 19 <tr> 20 <td class="width_1"><a href="http://www.babasport.com/cache/news/2/2.shtml" target="_blank">如何修改订单</a></td> 21 <td><a href="http://www.babasport.com/cache/news/4/5.shtml" target="_blank">网上支付常见问题</a></td> 22 <td><a href="http://www.babasport.com/cache/news/7/10.shtml" target="_blank">海外订单的运费</a></td> 23 <td><a href="http://www.babasport.com/cache/news/8/13.shtml" target="_blank">退换货流程</a></td> 24 <td class="bj_no"></td> 25 </tr> 26 <tr> 27 <td class="width_1"><a href="http://www.babasport.com/cache/news/2/3.shtml" target="_blank">如何取消订单</a></td> 28 <td><a href="http://www.babasport.com/cache/news/4/6.shtml" target="_blank">邮局汇款常见问题</a></td> 29 <td><a href="http://www.babasport.com/cache/news/7/11.shtml" target="_blank">免运费优惠</a></td> 30 <td class="bj_no"> </td> 31 <td class="bj_no"></td> 32 </tr> 33 <tr> 34 <td class="bj_no"></td> 35 <td><a href="http://www.babasport.com/cache/news/4/7.shtml" target="_blank">银行电汇常见问题</a></td> 36 <td class="bj_no"> </td> 37 <td class="bj_no"> </td> 38 <td class="bj_no"></td> 39 </tr> 40 <tr> 41 <td class="bj_no"> </td> 42 <td><a href="http://www.babasport.com/cache/news/5/8.shtml" target="_blank">汇款单招领</a></td> 43 <td class="bj_no"> </td> 44 <td class="bj_no"> </td> 45 <td class="bj_no"> </td> 46 </tr> 47 </table> 48 </div> 49 50 <div class="publish_bottom_message"> 51 <ul> 52 <li><a href="#">公司简介</a></li> 53 <li><a href="#">诚征英才</a></li> 54 <li><a href="#">网站联盟</a></li> 55 <li><a href="#">供货商合作</a></li> 56 <li class="m_right"><a href="#">交易条款</a><img src="http://www.baidu.com/s?kw=&sc=&cl=3&tn=sitehao123&ct=&rn=&lm=&ie=&rs2=&myselectvalue=&f=&pv=&z=&from=&word=%C9%D0%D1%A7%CC%C3%D4%F5%C3%B4%D1%F9" border="0" width="0" height="0"></li> 57 </ul> 58 </div><div align="center" style="MARGIN: 10px 0px 10px 0px;clear:both">Copyright (C) 巴巴运动网 2007-2009, All Rights Reserved 京ICP备07500530号</div><!-- 59 <div class="publish_bottom_message2"> 60 <div class="copyright">Copyright (C) 巴巴运动网 2007, All Rights Reserved</div> 61 <div class="validate"> </div> 62 </div> --> 63 </center>