一.首先当然是导入依赖
这个依赖被整合到了spring-boot-web里面所以只要导入了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
二.拦截器
实现接口用过mvc都知道实现HandlerInterceptor,这里也是一样的,我们创建一个类来实现它。我这里导入了两个页面,一个登录,只有登录才可以访问成功页面。
如图代码如下
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return false;
}
}
此时我们定义好了自己的拦截器规定,但是并没有把拦截器规定放入到SpringMVC中,那么对于Spring boot整合的SpringMVC来说,如何把规定放入到Spring MVC中呢?也就是告诉mvc我要这样拦截。在创建一个class来实现WebMvcConfigurer
1.释放静态资源。
2.不被拦截的请求页面。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
//释放的静态资源
private static final ArrayList STATIC_PATH=new ArrayList();
static {
STATIC_PATH.add("/css/**");
STATIC_PATH.add("/lib/**");
STATIC_PATH.add("/js/**");
STATIC_PATH.add("/images/**");
}
//不被拦截的请求和页面
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/index.html")
.excludePathPatterns(STATIC_PATH);
}
}
写好之后,拦截器生效
三.文件上传
1.我们写一个文件上传的表单
<form action="提交接口" method="post" enctype="multipart/form-data">
上传:<input type="file" name="filename"/>
<input type="submit"/>
</form>
2Controller代码
@Slf4j
@RestController
@RequestMapping("fileupload")
public class Fileup {
@PostMapping
public void download(@RequestParam("filename") MultipartFile file, HttpServletRequest request) throws IOException {
System.out.println(file.getName());
//处理图片
String fileName= UUID.randomUUID()+file.getOriginalFilename();
String path = "D://blog_images";
file.transferTo(new File(path+File.separator+fileName));
System.err.println("上传成功");
}
}
选择一个文件路径当然你可以写在yml里面提高代码质量。
记得释放这个接口不被拦截
四.设置文件上传大小
在yml里面设置
spring:
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
-------------------------完结-------------------------