spring boot 上传文件 到static 下_spring-boot(servlet过滤监听静态资源)文件上传

a3b8105970aa1e0f70e48b40cccec4b7.png

一,Spring Boot 介绍

1,如果使用 Spring 开发一个"HelloWorld"的 web 应用:

• 创建一个 web 项目并且导入相关 jar 包。SpringMVC Servlet

• 创建一个 web.xml

• 编写一个控制类(Controller)

• 需要一个部署 web 应用的服务器 如 tomcat

2,Spring Boot 特点:

• Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。

• 嵌入的 Tomcat,无需部署 WAR 文件

• Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方

式。

二,构建 Spring Boot 项目及启动器讲解

1. 使用 maven 构建 SpringBoot 项目

1e51178af5f611f6f265ea7e0d6a8d70.png

修改JDK版本 pom文件

1738dd966b38c0b0956f5a5f3a93e214.png

注入 SpringBoot 启动坐标

<!-- springBoot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot 启动器。

所谓的 springBoot 启动器其实就是一些 jar 包的集合。SprigBoot 一共提供 44 启动器。

4.1 spring-boot-starter-web

支持全栈式的 web 开发,包括了 romcat 和 springMVC 等 jar

4.2 spring-boot-starter-jdbc

支持 spring 以 jdbc 方式操作数据库的 jar 包的集合

4.3 spring-boot-starter-redis

支持 redis 键值存储的数据库操作

注意事项:启动器存放的位置。启动器可以和 controller 位于同一个包下,或者位于 controller 的上一级包中,但是不能放到 controller 的平级以及子包下

整合 Servlet

/**
*SpringBoot 整合 Servlet 方式一
*
*<servlet>
* <servlet-name>FirstServlet</servlet-name>
* <servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>
*</servlet>
*
*<servlet-mapping>
* <servlet-name>FirstServlet</servlet-name>
* <url-pattern>/first</url-pattern>
*</servlet-mapping>
*
*/
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
}

编写启动类

/**
* SpringBoot 整合 Servlet 方式一
*
*
*/
@SpringBootApplication
@ServletComponentScan //在 springBoot 启动时会扫描@WebServlet,并将该类实例
化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}

通过方法完成 Servlet 组件的注册

(不加注解 在启动类当中加入方法)

servlet

/**
*SpringBoot 整合 Servlet 方式二
*
*/
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("SecondServlet..........");
}
}

编写启动类

/**
* SpringBoot 整合 Servlet 方式二
*
*
*/
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new
SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
}

Filter extends HttpServlet

/**
*SpringBoot 整合 Filter 方式一
*<filter>
* <filter-name>FirstFilter</filter-name>
* <filter-class>com.bjsxt.filter.FirstFilter</filter-class>
*</filter>
*<filter-mapping>
* <filter-name>FirstFilter</filter-name>
* <url-pattern>/first</url-pattern>
*</filter-mapping>
*/

Listener implements ServletContextListener

/**
* springBoot 整合 Listener
*
*<listener>
* <listener-class>com.bjsxt.listener.FirstListener</listener-class>
*</listener>
*/

访问静态资源

SpringBoot 从 resources/static 的目录

注意目录名称必须是 static

在 src/main/webapp 目录名称必须要 webapp

文件上传

Controller

/**
* SpringBoot 文件上传
*
*
*/
//@Controller
@RestController //表示该类下的方法的返回值会自动做 json 格式的转换
public class FileUploadController {
/*
* 处理文件上传
*/
@RequestMapping("/fileUploadController")
public Map<String, Object> fileUpload(MultipartFile filename)throws
Exception{
System.out.println(filename.getOriginalFilename());
filename.transferTo(new
File("e:/"+filename.getOriginalFilename()));
Map<String, Object> map = new HashMap<>();
map.put("msg", "ok");
return map;
}
}

application.proerties

设置单个上传文件的大小
spring.http.multipart.maxFileSize=200MB
设置一次请求上传文件的总容量
spring.http.multipart.maxRequestSize=200MB

resources/static/html页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
	<form action="fileUploadController" method="post" enctype="multipart/form-data">
		上传文件:<input type="file" name="filename"/><br/>
		<input type="submit"/>
	</form>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值