单纯form表单提交 上传文件时,form表单应加上参数 enctype="multipart/form-data
后台接收时的代码:将表单数据封装进 list集合中
package com.jredu.servlet; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.jredu.model.User; import com.jredu.service.UserService; import com.jredu.service.Impl.UserServiceImpl; @WebServlet("/register.action") public class Register extends HttpServlet { /** * */ private static final long serialVersionUID = 1057467000241502504L; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub UserService service = new UserServiceImpl(); // 创建磁盘工厂 缓冲区和磁盘目录 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置文件上传的大小限制 ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(1024 * 1024 * 10);// 最大上传10M upload.setHeaderEncoding("utf-8");// 设置编码格式 try { String name = null; // 注册获取前台的值 String value = null; String newName = null; ArrayList<Object> list = new ArrayList<Object>(); @SuppressWarnings("unchecked") List<FileItem> files = upload.parseRequest(req); for (FileItem fileItem : files) { // 判断当前的数据时文件还是普通的表单 if (fileItem.isFormField()) { // 是文件 name = fileItem.getFieldName();// 获取属性的名字 value = fileItem.getString("utf-8");// 获取属性的值 list.add(value); } else {// 是表单 // 获取文件上传的文件名 name = fileItem.getName(); // 定义一个新的文件来接收 newName = System.currentTimeMillis() + name;// 以当前的总秒数来命名防止图片名称相同而覆盖 File file = new File("D:\image\" + newName); // 图片的存储路径 String headImg = "img/" + newName; list.add(headImg); // 从缓冲区写入磁盘 fileItem.write(file); fileItem.delete(); } } // 获取到全部的用户列表 List<User> uList = service.allUser(); // 将新注册的用户存入数据 boolean flag = service.register(list); if (flag) { System.out.println("注册成功"); // 跳转到登陆界面 req.getRequestDispatcher("/page/login.jsp").forward(req, resp); } else { System.out.println("注册失败"); } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }