码迷,mamicode.com
首页 > Web开发 > 详细

(三十)商品管理-添加商品(上传图片)

时间:2017-10-16 13:45:34      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:mfa   tor   ack   判断   delete   pack   文件上传   集合   jsp   

添加商品(上传图片)
    1.修改页面上添加连接
        /store/adminProduct?method=addUI
    2.在addUI请求转发到 添加页面
    3.在表单页面上
        修改action : /store/addProductServlet
        提交方式: method="post"
        添加enctype属性: enctype="multipart/form-data"
        给每个字段添加name属性
    4.addProductServlet
        通过request.getParameterMap获取的信息全部为空
        我们想使用beanuitls.populate(bean,map),
        我们需要创建一个map集合 ,将前台接受过来信息手动的put到map中
        注意:
            商品的图片:
                1:保存到服务器的磁盘
                2.在数据中添加图片的位置
        
        调用productservice完成添加商品操作
        重定向到所有的商品的上面
        
    ////////////////////////////////
    ////////////////////////////////
    ////////////////////////////////
fileUpload使用
            创建一个磁盘文件项工厂
                DiskFileItemFactory factory = new DiskFileItemFactory();
            创建一个核心文件上传对象 ServletFileUpLoad
                ServletFileUpload upload = new ServletFileUpload(factory);
            上传对象调用方法解析请求 获取一个List<FileItem>
                List<FileItem> list = upload.parseRequest(request);
            遍历list获取每一个文件项
                
                isFormFiled():判断是否是普通上传组件
                    true:普通上传组件
                    false:文件上传组件
                getFiledName():获取表单子标签的name属性值
                若是普通的上传组件
                    getString("utf-8"):获取用户输入的值
                若是文件上传组件
                    getName():获取上传文件的名称
                    getInputStream():获取上传文件流
                    最后删除临时文件
                        delete()

导入fileupload的jar包

http://pan.baidu.com/s/1jIb11gq

/store/WebContent/admin/product/list.jsp

技术分享

技术分享

/store/src/com/louis/web/servlet/AdminProductServlet.java

/**
     * 跳转到添加商品的页面
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    public String addUI(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //查询所有的分类 返回list
        CategoryService cs=(CategoryService) BeanFactory.getBean("CategoryService");
        List<Category> clist = cs.findAll();
        
        //将list放入request
        request.setAttribute("clist", clist);
        return "/admin/product/add.jsp";
    }

/store/WebContent/admin/product/add.jsp

技术分享

/store/src/com/louis/web/servlet/AddProductServlet.java

package com.louis.web.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

import com.louis.domain.Category;
import com.louis.domain.Product;
import com.louis.service.ProductService;
import com.louis.utils.BeanFactory;
import com.louis.utils.UUIDUtils;
import com.louis.utils.UploadUtils;

/**
 * Servlet implementation class AddProduct
 */
public class AddProductServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        try {
            //0.创建map 放入前台传递的数据
            HashMap<String, Object> map = new HashMap<>();
            
            //创建磁盘文件项
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //创建核心上传对象
            ServletFileUpload upload = new ServletFileUpload(factory);
            //解析request
            List<FileItem> list = upload.parseRequest(request);
            //遍历集合
            for (FileItem fi : list) {
                //判断是否是普通的上传组件
                if(fi.isFormField()){
                    //普通上传组件
                    map.put(fi.getFieldName(),fi.getString("utf-8"));
                }else{
                    //文件上传组件
                    //获取文件名称
                    String name = fi.getName();
                    
                    //获取文件的真实名称    xxxx.xx
                    String realName = UploadUtils.getRealName(name);
                    //获取文件的随机名称
                    String uuidName = UploadUtils.getUUIDName(realName);
                    
                    //获取文件的存放路径
                    String path = this.getServletContext().getRealPath("/products/1");
                    
                    //获取文件流
                    InputStream is = fi.getInputStream();
                    //保存图片
                    FileOutputStream os = new FileOutputStream(new File(path, uuidName));
                    
                    IOUtils.copy(is, os);
                    os.close();
                    is.close();
                    
                    //删除临时文件
                    fi.delete();
                    
                    //在map中设置文件的路径
                    map.put(fi.getFieldName(), "products/1/"+uuidName);
                    
                }
                
            }
            
            
            
            //1.封装参数
            Product p = new Product();
            BeanUtils.populate(p, map);
            
            //1.1 商品id
            p.setPid(UUIDUtils.getId());
            
            //1.2 商品时间
            p.setPdate(new Date());
            
            //1.3 封装cateogry
            Category c = new Category();
            c.setCid((String)map.get("cid"));
            
            p.setCategory(c);
            
            //2.调用service完成添加
            ProductService ps=(ProductService) BeanFactory.getBean("ProductService");
            ps.add(p);
            
            //3.页面重定向
            response.sendRedirect(request.getContextPath()+"/adminProduct?method=findAll");
        } catch (Exception e) {
            e.printStackTrace();
            request.setAttribute("msg", "商品添加失败~");
            request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
            return;
        }
        
        
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

 

/store/WebContent/WEB-INF/web.xml

  <servlet>
    <description></description>
    <display-name>AddProductServlet</display-name>
    <servlet-name>AddProductServlet</servlet-name>
    <servlet-class>com.louis.web.servlet.AddProductServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AddProductServlet</servlet-name>
    <url-pattern>/addProduct</url-pattern>
  </servlet-mapping>

 

问题:

beanutils

uploadfile

map

(三十)商品管理-添加商品(上传图片)

标签:mfa   tor   ack   判断   delete   pack   文件上传   集合   jsp   

原文地址:http://www.cnblogs.com/Michael2397/p/7676341.html

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