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);
} }

java使用BeanUtils封装file类型表单数据到一个对象中的更多相关文章

  1. Struts2_day02--Struts2封装获取表单数据方式

    Struts2封装获取表单数据方式 原始方式获取表单封装到实体类对象 属性封装(会用) 1 直接把表单提交属性封装到action的属性里面 2 实现步骤 (1)在action成员变量位置定义变量 - ...

  2. 解决ssm项目表单数据提交到数据库乱码问题

    问题:在ssm整合的项目里,从前台页面获取表单数据存到数据库中乱码 先说解决办法然后分析:问题出在form表单的提交方式上,我的web.xml配置过滤器都已经指定了编码集,为什么没有生效?原因是,对于 ...

  3. React事件处理、收集表单数据、高阶函数

    3.React事件处理.收集表单数据.高阶函数 3.1事件处理 class Demo extends React.Component { /* 1. 通过onXxx属性指定事件处理函数(注意大小写) ...

  4. 不使用BeanUtils,利用Java反射机制:表单数据自动封装到JavaBean

    在百度搜“java反射 将表单数据自动封装到javabean ”,第一页显示的都是一样的代码,都是利用导入第三方jar包<commons-beanutils>和<commons-lo ...

  5. 基于表单数据的封装,泛型,反射以及使用BeanUtils进行处理

    在Java Web开发过程中,会遇到很多的表单数据的提交和对表单数据的处理.而每次都需要对这些数据的字段进行一个一个的处理就显得尤为繁琐,在Java语言中,面向对象的存在目的便是为了消除重复代码,减少 ...

  6. FreemarkerJavaDemo【Android将表单数据生成Word文档的方案之一(基于freemarker2.3.28,只能java生成)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个方案只能在java中运行,无法在Android项目中运行.所以此方案是:APP将表单数据发送给后台,后台通过freemarker ...

  7. PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...

  8. Java中上传文件和表单数据提交如何保持数据的一致性?

    学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制 ...

  9. Ajax serialize()提交form表单不能上传file类型

    前台form表单的提交方式有很多种,例如: 1. form表单submit直接提交的方法 2. Ajax提交的方法 3. jquery提交的方法 4. 原生js提交的方法 每一种方法都有它的优势和不足 ...

随机推荐

  1. Github上最受关注的前端大牛 快来膜拜把!

    Github上最受关注的前端大牛 快来膜拜吧! 来源:csdn 发布时间:2014-08-06 阅读次数:4058 14   本文列出了Github上最受关注的10位前端大牛.看看他们负责的项目和提交 ...

  2. split array

    public boolean splitArray(int[] nums) { return dividSameSumGroup(0,nums, 0,0); } public boolean divi ...

  3. 剑指Offer - 九度1519 - 合并两个排序的链表

    剑指Offer - 九度1519 - 合并两个排序的链表2013-11-30 22:04 题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.(hi ...

  4. 用JAX-WS在Tomcat中发布WebService

    JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...

  5. mac虚拟机上(centos系统)设置联网第二种方式

    这种方式简单,不容易出错,用的桥接的方式. 这样的安装的centos会得到ip地址 然后编辑一下网卡配置,使其变为静态得ip 输入命令 # vi /etc/sysconfig/network-scri ...

  6. Spider_Man_6 の Scrapy_Downloader Middleware(针对一下🐷🐷🐷)

    下载器中间件(Downloader Middleware) 下载器中间件是介于Scrapy的request/response处理的钩子框架.是用于全局修改Scrapy request和response ...

  7. paramiko类Fabric主机管理

    环境:Linux python3.5 要求:类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/ ...

  8. 2 28TOP100

    import json import requests from requests.exceptions import RequestException import re import time d ...

  9. OpenCV_1.0安装包下载

    OpenCV_1.0安装包下载 点击下载

  10. rownum浅谈(一)

    只要做web开发,几乎没有不需要分页查询的,在oracle中,rownum就是用来进行处理分页的. 1.rownum是oracle对结果集返回的一个伪列,也就是说是先查询完结果之后再加上的一个虚列,相 ...