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);
} }
java使用BeanUtils封装file类型表单数据到一个对象中的更多相关文章
- Struts2_day02--Struts2封装获取表单数据方式
Struts2封装获取表单数据方式 原始方式获取表单封装到实体类对象 属性封装(会用) 1 直接把表单提交属性封装到action的属性里面 2 实现步骤 (1)在action成员变量位置定义变量 - ...
- 解决ssm项目表单数据提交到数据库乱码问题
问题:在ssm整合的项目里,从前台页面获取表单数据存到数据库中乱码 先说解决办法然后分析:问题出在form表单的提交方式上,我的web.xml配置过滤器都已经指定了编码集,为什么没有生效?原因是,对于 ...
- React事件处理、收集表单数据、高阶函数
3.React事件处理.收集表单数据.高阶函数 3.1事件处理 class Demo extends React.Component { /* 1. 通过onXxx属性指定事件处理函数(注意大小写) ...
- 不使用BeanUtils,利用Java反射机制:表单数据自动封装到JavaBean
在百度搜“java反射 将表单数据自动封装到javabean ”,第一页显示的都是一样的代码,都是利用导入第三方jar包<commons-beanutils>和<commons-lo ...
- 基于表单数据的封装,泛型,反射以及使用BeanUtils进行处理
在Java Web开发过程中,会遇到很多的表单数据的提交和对表单数据的处理.而每次都需要对这些数据的字段进行一个一个的处理就显得尤为繁琐,在Java语言中,面向对象的存在目的便是为了消除重复代码,减少 ...
- FreemarkerJavaDemo【Android将表单数据生成Word文档的方案之一(基于freemarker2.3.28,只能java生成)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个方案只能在java中运行,无法在Android项目中运行.所以此方案是:APP将表单数据发送给后台,后台通过freemarker ...
- PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...
- Java中上传文件和表单数据提交如何保持数据的一致性?
学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制 ...
- Ajax serialize()提交form表单不能上传file类型
前台form表单的提交方式有很多种,例如: 1. form表单submit直接提交的方法 2. Ajax提交的方法 3. jquery提交的方法 4. 原生js提交的方法 每一种方法都有它的优势和不足 ...
随机推荐
- [译]16-spring基于注解的配置元数据
从spring2.5起spring框架开始支持java注解的配置元数据.所以除了使用xml配置文件来描述bean的装配之外,你还 可以使用基于java注解的配置元数据来完成同样的功能. spring框 ...
- ASP.NET Core ---异常处理
一.局部异常处理: 在Action里面catch 二.全局异常处理: 1.默认的异常处理配置: 默认配置在StartUp文件的Configure中注册错误处理,显示开发者错误页面: public vo ...
- ASP.NET Core [1]:Hosting(笔记)
参考:http://www.cnblogs.com/RainingNight/p/hosting-in-asp-net-core.html
- android studio 配置网络代理
1.首先在vultr网站购买服务器. 然后使用shadowsocksR给服务器配置FQ,再在本地机器配置好shadowsocksR. 参考网址:https://github.com/getlanter ...
- 第五章 Internet协议
写在开头: 埋头学习也差不多半个月了,达到了这半个月每天都会去图书馆的目标.确实挺忙的,不管在学习上,部门社团上,党建上.有时候为了多学一些总是会挤掉了其他事情的一些时间.但是自己时刻提醒着自己不要太 ...
- ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 P: 【数组】1234方阵(phalanx)
http://acm.ocrosoft.com/problem.php?cid=1316&pid=15 题目描述 编程打印如下规律的n*n方阵.输入n,按规律输出方阵. 方阵规律如下图:使左对 ...
- 前端构建工具gulpjs的使用介绍及技巧 (转)
gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nodejs中stream来读取和操作数据,其速 ...
- 【bzoj3669】[Noi2014]魔法森林 Kruskal+LCT
原文地址:http://www.cnblogs.com/GXZlegend/p/6797748.html 题目描述 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看 ...
- glibc内存泄露以及TCmalloc 简单分析
最近开发一个私人程序时碰到了严重的内存问题,具体表现为:进程占用的内存会随着访问高峰不断上升,直到发生OOM被kill为止.我们使用valgrind等工具进行检查发现程序并无内存泄露,经过仔细调查我们 ...
- sql或oracle插入数据时进行md5加密
1.sql简单直接调用: SELECT hashbytes(') ; 2.oracle要复杂些 首写需要建函数: CREATE OR REPLACE FUNCTION MD5( passwd IN V ...