【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 的时候我们才会把它显示出来

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 00:39:22

【j2ee spring】43、巴巴运动网添加,编辑,上架,下架产品样式的相关文章

【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】28、巴巴运动网-整合hibernate4+spring4(3)使用注解

巴巴运动网-整合hibernate4+spring4(3)使用注解 1.项目图解 2.首先我们引入相应的jar包 使用注解的好处不言而喻,我们就不用再数据库中再建表,可以依赖jpa或者hibernate帮我们建表了 3.我们配置一下数据库中相应的实体对象 ProductType.java /** * 功能:这是产品类别的 * 文件:ProductType.java * 时间:2015年5月12日10:16:21 * 作者:cutter_point */ package com.cutter_po

【j2ee spring】29、巴巴运动网-整合hibernate4+spring4(4)DAO层

巴巴运动网-整合hibernate4+spring4(3)DAO层 1.项目图解 2.首先我们引入相应的jar包 3.我们配置一下数据库中相应的实体对象 ProductType.java /** * 功能:这是产品类别的 * 文件:ProductType.java * 时间:2015年5月12日10:16:21 * 作者:cutter_point */ package com.cutter_point.bean.product; import javax.persistence.Column;

【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】30、巴巴运动网-整合hibernate4+spring4(5)分页

巴巴运动网-整合hibernate4+spring4(5)分页 1.项目图解 2.首先我们引入相应的jar包 3.我们配置一下数据库中相应的实体对象 ProductType.java /** * 功能:这是产品类别的 * 文件:ProductType.java * 时间:2015年5月12日10:16:21 * 作者:cutter_point */ package com.cutter_point.bean.product; import java.io.Serializable; import

【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】42、巴巴运动网显示产品样式

巴巴运动网显示产品样式 项目结构 项目代码 底层接口: /** * 功能:这个是品牌样式的接口 * 文件: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 extend

【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】27、巴巴运动网-整合hibernate4+spring4(2)

巴巴运动网-整合hibernate4+spring4(2) 1.项目图解 2.首先我们引入相应的jar包 这里用的是oracle 11g,所以我们使用的数据库连接jar包是ojdbc6, 实际上ojdbc5和6的差别就是支持的数据版本的问题,只要你安装了相应的数据库,对应的版本里面就有相应的数据库jar包,不行百度绝壁有!!! 3.我们配置一下数据库中相应的实体对象 ProductType.java /** * 功能:这是产品类别的 * 文件:ProductType.java * 时间:2015