java使用BeanUtils封装file类型表单数据到一个对象中

package com.cc.web.servlet;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.cc.domain.Category;
import com.cc.domain.Product;
import com.cc.utils.CommonsUtils;
import com.cc.web.service.AdminService;

public class AdminProductServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Product product=new Product();
        //收集数据的容器
        Map<String, Object> map=new HashMap<String, Object>();
        try {
            //目的:收集表单的数据并封装成实体Product 将上传图片存到服务器磁盘上
            
            //创建磁盘文件项工厂
            DiskFileItemFactory factory=new DiskFileItemFactory();
            //创建文件上传的核心对象
            ServletFileUpload upload=new ServletFileUpload(factory);
            //解析request获得文件项对象集合
            List<FileItem> parseRequest = upload.parseRequest(request);
            for (FileItem item : parseRequest) {
                //判断是否是普通表单项
                boolean formField = item.isFormField();
                if(formField){
                    //普通表单项获得数据 封装到Product实体中
                    String fieldName = item.getFieldName();    
                    String fieldVlue=item.getString("UTF-8");
            //放进map里可以自动封装数据 map.put(fieldName, fieldVlue); }
else{ //文件上传项获得文件的名称,获得文件的内容 String filename=item.getName(); String path=this.getServletContext().getRealPath("upload"); InputStream in=item.getInputStream(); OutputStream out=new FileOutputStream(path+"/"+filename); IOUtils.copy(in, out); in.close(); out.close(); item.delete(); map.put("pinmage", "/"+filename); } } BeanUtils.populate(product, map); //是否product对象封装数据完全,表单不具备的需要手动封装 //private String pid; product.setPid(CommonsUtils.getUUID()); //private Date pdate SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); Date date=new Date(); String format2 = format.format(date); Date pdate=format.parse(format2); product.setPdate(pdate); //private int pflag; product.setPflag(0); //private Category category; Category category=new Category(); category.setCid(map.get("cid").toString()); product.setCategory(category); //将Product传递给service层 AdminService service =new AdminService(); service.saveProduct(product); } catch (Exception e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

猜你喜欢

转载自www.cnblogs.com/benjamin77/p/9283212.html
今日推荐