【j2ee spring】43、巴巴运动网添加,编辑,上架,下架产品样式
项目结构
项目代码
底层接口实现
/** * 功能:这个是品牌样式的接口 * 文件:ProductStyleService.java * 时间:2015年5月31日19:33:19 * 作者:cutter_point */package com.cutter_point.service.product;import com.cutter_point.service.base.DAO;public interface ProductStyleService extends DAO{ //这里面定义ProductStyleService专有的方法 /** * 这个是为了设置产品是否上架的功能 * @param productids 设置的一堆产品的id号 * @param status 设置状态 */ public void setVisibleStatus(Integer[] productstyleids, boolean status);}/** * 功能:这是品牌样式的服务类 * 文件:ProductStyleServiceBean.java * 时间:2015年5月31日19:34:15 * 作者:cutter_point */package com.cutter_point.service.product.impl;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.cutter_point.service.base.DaoSupport;import com.cutter_point.service.product.ProductStyleService;@Service //相当于在spring里面定义一个bean,这是注解的方式<context:component-scan base-package="com.cutter_point" />@Transactional //在方法执行的时候开启事务public class ProductStyleServiceBean extends DaoSupport implements ProductStyleService { @Override public void setVisibleStatus(Integer[] productstyleids, boolean status) { //获取数据库的链接 Session session = this.sessionFactory.getCurrentSession(); //得到当前的session连接 //组装sql语句 if(productstyleids != null && productstyleids.length > 0) { //组建相应的sql语句 StringBuilder sql = new StringBuilder(); for(int i = 0; i < productstyleids.length; ++i) { sql.append(" ?,"); } //去掉最后一个"," sql.deleteCharAt(sql.length() - 1); //这个索引从0开始,所以最后一个是长度-1 //得到相应的预处理指令 Query query = session.createSQLQuery("update productstyle o set o.visible = ? where o.id in ( " + sql.toString() + ")"); //设置上下架 query.setParameter(0, status); for(int i = 0; i < productstyleids.length; ++i) { //?计数从0开始 query.setParameter(i + 1, productstyleids[i]); } //执行sql语句在数据库中更新结果 query.executeUpdate(); } }}
产品样式
我们的产品样式是依托产品的,每个产品有许多样式,所以我们的样式在每个产品的产品管理里面
点击进入产品图片管理
实现相应的功能
/** * 功能:这个是产品样式的控制器 * 时间:2015年6月1日15:45:22 * 文件:ProductStyleManageAction.java * 作者:cutter_point */package com.cutter_point.web.action.product;import java.io.FileInputStream;import java.io.FileOutputStream;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.ServletRequestAware;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.cutter_point.bean.product.ProductInfo;import com.cutter_point.bean.product.ProductStyle;import com.cutter_point.service.product.ProductInfoService;import com.cutter_point.service.product.ProductStyleService;import com.cutter_point.utils.SiteUrl;import com.cutter_point.web.formbean.product.ProductForm;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;@Controller@Scope("prototype")public class ProductStyleManageAction extends ActionSupport implements ServletRequestAware, ModelDriven<ProductForm>{ private static final long serialVersionUID = 1378025018750845909L; @Resource private ProductStyleService productStyleService; @Resource private ProductInfoService productInfoService; private HttpServletRequest request; private ProductForm pf; /** * 设置产品上架 * @return String struts2的返回跳转result * @throws Exception */ public String visible() throws Exception { productStyleService.setVisibleStatus(pf.getStylesids(), true); //上架就是可见 request.setAttribute("message", "产品上架成功"); request.setAttribute("urladdress", SiteUrl.readUrl("control.productstyle.list") + "?productid=" + pf.getProductid()); return "message"; } /** * 设置产品下架 * @return String struts2的返回跳转result * @throws Exception */ public String disable() throws Exception { productStyleService.setVisibleStatus(pf.getStylesids(), false); //下架就是不可见 request.setAttribute("message", "产品下架成功"); request.setAttribute("urladdress", SiteUrl.readUrl("control.productstyle.list") + "?productid=" + pf.getProductid()); return "message"; } /** * 显示产品修改界面 * @return String struts2的返回跳转result * @throws Exception */ public String editUI() throws Exception { //根据样式id号获取相应的id ProductStyle productStyle = productStyleService.find(ProductStyle.class, pf.getProductstyleid()); pf.setStylename(productStyle.getName()); //获取名字 //显示的路径 String imageshowpath = "../images/" + productStyle.getImageFullPath(); request.setAttribute("imageshowpath", imageshowpath); return "edit"; } /** * 产品修改 * @return String struts2的返回跳转result * @throws Exception */ public String edit() throws Exception { ProductStyle productStyle = productStyleService.find(ProductStyle.class, pf.getProductstyleid()); //查询出这个产品 productStyle.setName(pf.getStylename()); //设置样式的名称 productStyle.setImagename(pf.getImagefileFileName()); //设置图片名称 //还有就是样式里面没有上传文件的话那么就不用处理了,只有文件上传了才会被处理 if(pf.getImagefile() != null && pf.getImagefile().length() > 0) { /*************************************************************************************************************** * 吧新的文件上传到相应的文件夹 **** ***************************************************************************************************************/ //首先验证图片的格式是不是正确的 if(!pf.validateFileType(pf.getImagefileFileName())) { //如果图片格式不正确 request.setAttribute("message", "产品修改成功"); request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list") + "?productid=" + productStyle.getProduct().getId()); return "message"; } //验证图片文件的大小 if(pf.getImagefile().length() > 409600) { request.setAttribute("message", "图片不能大于400k"); request.setAttribute("urladdress", SiteUrl.readUrl("control.productstyle.list") + "?productid=" + productStyle.getProduct().getId()); return "message"; } //上传到现有的路径 //G:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\babaSport_1100_brand\images\ 这个就是realpath String realpath = ServletActionContext.getServletContext().getRealPath("/images"); ProductForm.saveProductImageFile(pf.getImagefile(), pf.getImagefileFileName(), productStyle.getProduct().getType().getTypeid(), productStyle.getProduct().getId(), realpath); } /*************************************************************************************************************** * 产品信息保存到数据库 **** ***************************************************************************************************************/ productStyleService.update(productStyle); //保存这个产品,当保存完了之后hibernate会吧这个产品的id号赋值给product /*************************************************************************************************************** * 跳转成功之后页面传值 ** ***************************************************************************************************************/ request.setAttribute("message", "产品修改成功"); request.setAttribute("urladdress", SiteUrl.readUrl("control.product.list") + "?productid=" + productStyle.getProduct().getId()); return "message"; } /** * 显示样式添加界面 * @return String struts2的返回跳转result * @throws Exception */ public String addUI() throws Exception { return "add"; } /** * 显示样式添加处理 * @return String struts2的返回跳转result * @throws Exception */ public String add() throws Exception { //用来保存图片路径 //再上传之前判断上传图片类型是不是符合要求 if(!pf.validateFileType(pf.getImagefileFileName())) { request.setAttribute("message", "图片格式不对"); request.setAttribute("urladdress", SiteUrl.readUrl("control.productstyle.list")); return "message"; } //得到图片后缀 //String ext = pf.getImagefileFileName().substring(pf.getImagefileFileName().lastIndexOf('.')); if(pf.getImagefile().length() > 409600) { request.setAttribute("message", "图片不能大于400k"); request.setAttribute("urladdress", SiteUrl.readUrl("control.productstyle.list")); return "message"; } ProductInfo productInfo = new ProductInfo(); //查找到的产品 //根据相应的id号得到相应的产品 productInfo = productInfoService.find(ProductInfo.class, pf.getProductid()); /*************************************************************************************************************** * 产品信息保存到数据库 **** ***************************************************************************************************************/ //我们要保存的产品样式 ProductStyle productStyle = new ProductStyle(pf.getStylename(), pf.getImagefileFileName()); //上传的文件信息 productStyle.setProduct(productInfo); productStyleService.save(productStyle); /*************************************************************************************************************** * 文件上传 ** ***************************************************************************************************************/ //构造产品保存的目录 //G:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\babaSport_1100_brand\images\ 这个就是realpath String realpath = ServletActionContext.getServletContext().getRealPath("/images"); ProductForm.saveProductImageFile(pf.getImagefile(), pf.getImagefileFileName(), productInfo.getType().getTypeid(), productInfo.getId(), realpath); /*************************************************************************************************************** * 跳转成功之后页面传值 ** ***************************************************************************************************************/ request.setAttribute("message", "产品添加成功"); request.setAttribute("urladdress", SiteUrl.readUrl("control.productstyle.list") + "?productid=" + productInfo.getId()); return "message"; } //管理文件流 protected void close(FileOutputStream fos, FileInputStream fis) { if(fis != null) { try { fis.close(); } catch (Exception e) { System.out.println("关闭文件输入流失败"); e.printStackTrace(); } } if(fos != null) { try { fos.close(); } catch (Exception e) { System.out.println("关闭文件输出流失败"); e.printStackTrace(); } } } @Override public void setServletRequest(HttpServletRequest arg0) { this.request = arg0; } @Override public ProductForm getModel() { if(pf == null) pf = new ProductForm(); return pf; } public ProductForm getPf() { return pf; } public void setPf(ProductForm pf) { this.pf = pf; }}
我们的配置文件struts.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <include file="struts-default.xml" /> <constant name="struts.ObjectFactory" value="spring" /> <!-- 表示这里面的action由spring进行创建 --> <constant name="struts.devMode" value="true" /> <!--解决乱码 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="control" namespace="/control" extends="struts-default"> <global-results> <result name="message">/page/share/message.jsp</result> </global-results> <action name="center-*"><!-- 直接跳转,不需要经过class的验证,默认返回success --> <result name="success">/page/controlcenter/{1}.jsp</result> </action> <!-- 产品类别展示 --> <action name="producttypelist" class="productTypeAction" method="execute"> <result name="list">/page/product/producttypelist.jsp</result> </action> <!-- 产品类别管理 --> <action name="*-producttypemanage" class="productTypeManageAction" method="{1}UI"> <result name="{1}">/page/product/{1}_productType.jsp</result> </action> <action name="producttypemanage-*" class="productTypeManageAction" method="{1}"> <result name="{1}">/page/product/{1}_productType.jsp</result> </action> <!-- 品牌类别展示 --> <action name="brandlist" class="brandAction" method="execute"> <result name="list">/page/product/brandlist.jsp</result> </action> <!-- 品牌类别管理 --> <action name="*-brandmanage" class="brandManageAction" method="{1}UI"> <result name="{1}">/page/product/{1}_brand.jsp</result> </action> <action name="brandmanage-*" class="brandManageAction" method="{1}"> <result name="{1}">/page/product/{1}_brand.jsp</result> </action> <!-- 文件展示 --> <action name="uploadfilelist" class="uploadFileAction" method="execute"> <result name="list">/page/uploadfile/uploadfilelist.jsp</result> </action> <!-- 文件上传管理 --> <action name="*-filemanage" class="uploadfileManageAction" method="{1}"> <result name="{1}">/page/uploadfile/{1}.jsp</result> <result name="fileuploadfinish">/page/uploadfile/fileuploadfinish.jsp</result> <result name="error">/page/uploadfile/error.jsp</result> </action> <!-- 产品分页展示 --> <action name="productlist" class="productAction" method="execute"> <result name="list">/page/product/productlist.jsp</result> </action> <!-- 产品管理 --> <action name="*-productmanage" class="productManageAction" method="{1}UI"> <result name="{1}">/page/product/{1}_product.jsp</result> <result name="type{1}">/page/product/productTypeSelect.jsp</result> </action> <action name="productmanage-*" class="productManageAction" method="{1}"> <result name="{1}">/page/product/{1}_product.jsp</result> </action> <!-- 产品样式分页展示 --> <action name="productstylelist" class="productStyleAction" method="execute"> <result name="list">/page/product/productstylelist.jsp</result> </action> <!-- 产品样式管理 --> <action name="*-productstylemanage" class="productStyleManageAction" method="{1}UI"> <result name="{1}">/page/product/{1}_productstyle.jsp</result> </action> <action name="productstylemanage-*" class="productStyleManageAction" method="{1}"> <result name="{1}">/page/product/{1}_productstyle.jsp</result> </action> </package></struts>
总结
这个是完成了相应的修改添加和产品的 上下架功能,上下架功能其实就是我们的数据库中设定的一个字段,也就是是否可见的字段,在展示的时候我们需要有一个前提的条件,那就是当产品的可见字段是true 的时候我们才会把它显示出来
版权声明:本文为博主原创文章,未经博主允许不得转载。