项目结构
项目代码
底层接口实现
/**
* 功能:这个是品牌样式的接口
* 文件: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 的时候我们才会把它显示出来
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-22 00:39:22