码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-07-14 17:57:38      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:j2ee   hibernate   spring   struts2   

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

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

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

标签:j2ee   hibernate   spring   struts2   

原文地址:http://blog.csdn.net/cutter_point/article/details/46880633

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!