commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
springmvc 传统方式的文件上传
传统方式上传文件,我们上传的文件和访问的应用存在于同一台服务器上,并且上传完成之后,浏览器可能跳转。
编写 jsp 页面
传统文件上传
选择文件:
编写控制器
/**
-
@Author: Ly
-
@Date: 2020-09-28 11:15
*/
@Controller
@RequestMapping(“/user”)
public class UserController {
/**
-
文件上传
-
@return
*/
@RequestMapping(“/fileupload1”)
public String fileupload1(HttpServletRequest request) throws Exception {
System.out.println(“文件上传”);
//使用fileupload组件完成文件上传
String path=request.getSession().getServletContext().getRealPath(“/uploads/”);
System.out.println(path);
//判断该路径是否存在
File file=new File(path);
if(!file.exists()){
//创建文件夹
file.mkdirs();
}
//解析request对象,获取上传文件项
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
//解析request
List items=upload.parseRequest(request);
//遍历
for(FileItem item:items){
//进行判断,当前item对象是否是上传文件项
if(item.isFormField()){
//说明普通表单项
}else{
//说明上传文件项
//获取上传文件的名称
String filename=item.getName();
//把文件名称设置成唯一值,uid
String uuid=UUID.randomUUID().toString().replace(“-”,“”);
filename=uuid+“_”+filename;
//完成文件上传
item.write(new File(path,filename));
//删除临时文件
item.delete();
}
}
return “success”;
}
}
SpringMVC方式文件上传
在springmvc.xml中配置文件解析器
jsp页面
SpringMVC方式文件上传
选择文件:
编写控制器
/**
-
@Author: Ly
-
@Date: 2020-09-28 11:15
*/
@Controller
@RequestMapping(“/user”)
public class UserController {
/**
-
SpringMVC文件上传
-
@return
*/
@RequestMapping(“/fileupload2”)
public String fileupload2(HttpServletRequest request, MultipartFile upload) throws Exception {
System.out.println(“springMVC文件上传”);
//使用fileupload组件完成文件上传
String path=request.getSession().getServletContext().getRealPath(“/uploads/”);
System.out.println(path);
//判断该路径是否存在
File file=new File(path);
if(!file.exists()){
//创建文件夹
file.mkdirs();
}
//获取上传文件的名称
String filename=upload.getOriginalFilename();
//把文件名称设置成唯一值,uid
String uuid=UUID.randomUUID().toString().replace(“-”,“”);
filename=uuid+“_”+filename;
//完成文件上传
upload.transferTo(new File(path,filename));
return “success”;
}
}
springmvc 跨服务器方式的文件上传
分服务器的目的:在实际开发中,我们会有很多处理不同功能的服务器。分服务器处理可以让服务器各司其职,从而提高我们项目的运行效率。
不同类型的服务器
-
应用服务器:负责部署我们的应用
-
数据库服务器:运行我们的数据库
-
缓存和消息服务器:负责处理大并发访问的缓存和消息
-
文件服务器:负责存储用户上传文件的服务器。
代码实现
添加sun公司提供的跨服务器的相关依赖
com.sun.jersey
jersey-core
1.18.1
com.sun.jersey
jersey-client
1.18.1
准备两个 tomcat 服务器,并创建一个用于存放图片的 web 工程,在文件服务器的 tomcat 配置中加入,允许读写操作。
文件位置:
加入内容:接收文件的目标服务器可以支持写入操作
编写 jsp 页面
名称:
图片:
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
ind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-hJ0d6bHs-1718721016037)]
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!