这个依赖被整合到了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);
- }
-
-
- }
写好之后,拦截器生效
- <form action="提交接口" method="post" enctype="multipart/form-data">
- 上传:<input type="file" name="filename"/>
- <input type="submit"/>
- </form>
- @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
-------------------------完结-------------------------