弹簧引导如何整合web层

  介绍

这篇文章主要讲解了弹簧引导如何整合web层,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

春季启动中对Spring MVC的文件上传是一脉相传的,我们双击移去搜CommonsMultipartResolver这个类,它是文件上传的一个实现类。我们先看一下源码:

春天引导如何整合网络层”> </p> <p>我们可以看到它是MultipartResolver的实现类,我们再按Ctrl + H,就可以看到右侧MultipartResolver的两个实现类。第一个实现类在servlet3.0之后,什么都不用加,就可以直接使用。第二个实现类的兼容性要好一些,早期的servlet也可以使用,但需要自己额外的加依赖。那么在春天引导中,我们就可以直接使用第一个实现类去完成文件上传。</p> <p>只需要一个控制器和一个静态html文件,就可以,先看一下代码</p> <pre class=包com.zl.upload;      进口org.springframework.web.bind.annotation.PostMapping;   进口org.springframework.web.bind.annotation.RestController;   进口org.springframework.web.multipart.MultipartFile;      进口javax.servlet.http.HttpServletRequest;   进口java.io.File;   进口java.io.IOException;   进口java.text.SimpleDateFormat;   进口java.util.Date;   进口java.util.UUID;   进口java.util.logging.SimpleFormatter;      @RestController   公开课UploadController {   SimpleDateFormat党卫军=new SimpleDateFormat (“/MM/dd/yyyy“);   @PostMapping (“/upload")//请求HttpServletRequest获取缓存地址,一般这里使用图片服务器   公共字符串上传(MultipartFile MultipartFile HttpServletRequest请求){//图片保存在项目的运行路径下   字符串格式=ss.format(新日期());   字符串realpath=request.getServletContext () .getRealPath (“img") +格式;//创建保存的文件夹   文件f=新文件(realpath);   如果(! f.exists ()) {   f.mkdirs ();   }//因为文件名可能会重复,所以要对文件名进行修改   字符串oldName=multipartFile.getOriginalFilename ();   System.out.println (oldName);   字符串新名称=UUID.randomUUID () .toString () + oldName.substring (oldName.lastIndexOf (“!”);//保存图片   尝试{   multipartFile。transferTo(新文件(f,新名称));//获取路径,动态获取,因为有可能是http,也有可能是HTTPS   字符串路径=request.getScheme () +“://,+ request.getServerName () +“:“;+ request.getServerPort () +“/img"+格式+新名称;   返回路径;   }捕捉(IOException e) {   e.printStackTrace ();   }   返回“error";   }   }

第一步,创建文件的存放地址,和路径

第二步,修改文件名

第三步,保存文件(文件件,和文件名)

后端的处理就完的了,我们看一下前台如何处理

& lt; !DOCTYPE html>   & lt; html lang=癳n"祝辞   & lt; head>   & lt;元charset=癠TF-8"祝辞   & lt; title>文件上传& lt;/title>   & lt;/head>   & lt; body>   action=& lt;形式“/upload"方法=皃ost"enctype=岸嗖糠?form-data"比;   & lt;输入类型=癴ile"name=癿ultipartFile"比;   & lt;输入类型=皊ubmit"值=https://www.yisu.com/zixun/碧峤?>   

前端处理很简单,就是开启文件上传通道就可以了。

但是这种做法在前后端分离开发中很少使用,接下来我们看一下用ajax如何实现。

后端的不用变,前端的改成ajax的:

& lt; !DOCTYPE html>   & lt; html lang=癳n"祝辞   & lt; head>   & lt;元charset=癠TF-8"祝辞   & lt; title> ajax文件上传& lt;/title>      & lt;脚本src=癹query-3.4.1.min.js"祝辞& lt;/script>   & lt;/head>   & lt; script>   函数上传(){   警报(“ss");   var multipartFile=$ (“# file") [0] .files [0];   警报(multipartFile);   var formData=new formData ();      formData.append (“multipartFile" multipartFile);   . ajax({美元   类型:& # 39;文章# 39;   url: & # 39;/上传# 39;   processData:假的,   contentType:假的,   数据:formData,   成功:函数(味精){   $ (“# result") . html(味精);   }      } )   }   & lt;/script>   & lt; body>   & lt;形式enctype=岸嗖糠?form-data"比;   & lt;输入类型=癴ile"id=癴ile"比;   & lt;输入类型=癰utton"值=吧洗? @PostMapping (“/uploads")//请求HttpServletRequest获取缓存地址,一般这里使用图片服务器   公共字符串上传(MultipartFile [] multipartFiles, HttpServletRequest请求){//图片保存在项目的运行路径下   字符串格式=ss.format(新日期());   字符串realpath=request.getServletContext () .getRealPath (“img") +格式;//创建保存的文件夹   文件f=新文件(realpath);   如果(! f.exists ()) {   f.mkdirs ();   }//用循环获取每个文件   (MultipartFile文件:multipartFiles) {   字符串oldName=file.getOriginalFilename ();   字符串新名称=UUID.randomUUID () .toString () + oldName.substring (oldName.lastIndexOf (“!”);//保存图片   尝试{   文件。transferTo(新文件(f,新名称));//获取路径,动态获取,因为有可能是http,也有可能是HTTPS   字符串路径=request.getScheme () +“://,+ request.getServerName () +“:“;+ request.getServerPort () +“/img"+格式+新名称;   System.out.println(路径);   }捕捉(IOException e) {   e.printStackTrace ();   }   }//因为文件名可能会重复,所以要对文件名进行修改      返回“success";   }

弹簧引导如何整合web层