javaweb Servlet3 jquery实现ajax上传文件 作者:马育民 • 2023-09-14 09:49 • 阅读:10107 # 说明 使用 Servlet3 实现上传文件,非常简单,不需要依赖第三方jar包 ### 关键 - 使用ajax实现上传,js有特殊写法: - 将数据封装到 `FormData` 中 - 进行下面配置: ``` contentType: false, // 关键 processData: false, // 关键 ``` - servlet要用 `@MultipartConfig` 注解 # 代码 ### html 需要引入 jquery ``` 注册 注册页面 登录名: 密码: 上传头像: ``` ### java 需要使用Jackson jar包 **关键:**servlet要用 `@MultipartConfig` 注解,否则上传失败 ``` package com.sys.servlet; import com.fasterxml.jackson.databind.ObjectMapper; import com.sys.entity.User; import com.sys.exception.DuplicateNameException; import com.sys.pojo.JsonResult; import com.sys.service.UserService; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.UUID; @WebServlet("/reg") @MultipartConfig public class RegistServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Part head = req.getPart("head"); if(head!=null) { // 上传文件才执行下面代码 if(head.getSubmittedFileName()!=null && !"".equals(head.getSubmittedFileName())) { // 在当前工程下创建upload文件夹 // upload文件夹的绝对路径(全路径) String upload = req.getServletContext().getRealPath("/upload"); File uploadFile = new File(upload); if (!uploadFile.exists()) { // 创建文件夹 uploadFile.mkdirs(); } String uuid = UUID.randomUUID().toString().replace("-", ""); //截取文件后缀 // 拼装,uuid+文件后缀 // 拼装的是保存上传文件的全路径 File file = new File(uploadFile, head.getSubmittedFileName()); // 保存 head.write(file.getAbsolutePath()); //文件名称 System.out.println(head.getSubmittedFileName()); //文件大小 System.out.println(head.getSize()); } } // 通过request对象获取浏览器提交的参数 String username = req.getParameter("username"); String password = req.getParameter("password"); User user = new User(); user.setUsername(username); user.setUpassword(password); UserService service = new UserService(); PrintWriter writer = resp.getWriter(); JsonResult jr = new JsonResult(); try { service.regist(user); jr.setCode(0); jr.setMsg("注册成功!"); } catch (DuplicateNameException e){ jr.setCode(103); jr.setMsg(e.getMessage()); } catch (Exception e) { jr.setCode(500); jr.setMsg("服务器发生错误"); e.printStackTrace(); } //将java对象,转换成 json 格式的字符串 ObjectMapper om=new ObjectMapper(); String json=om.writeValueAsString(jr); writer.write(json); writer.close();//关闭 } } ``` 原文出处:http://www.malaoshi.top/show_1IX6EQ4LoUlw.html