静态资源访问
在static中
application.properties
spring.mvc.static-path=/static/**
spring.web.resources.static-location=classpath:/static/
过滤规则/static/**
静态资源位置classpath:/static/
文件放在static下,就可以直接访问了
http://localhost:8080/images/test.jpeg
spring.mvc.static-path-pattern=/images/**
spring.web.resources.static-locations=classpath:/css
将类放在target下的classes中
文件上传
表单的enctype属性规定在发送到服务器之前应该如何编码
springboot 限制文件大小为1m
可以通过MULTI[PARTFILE 获取文件信息
package com.example.helloworld2.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
@RestController
public class FileUploadController {
@PostMapping("/upload")//传输用户名称和头像nickname,photo
public String up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException{
System.out.println(nickname);
//获取图片的原始名称
System.out.println(photo.getOriginalFilename());
//文件类型
System.out.println(photo.getContentType());
// System.out.println(System.getProperty("user.dir"));
String path=request.getServletContext().getRealPath("/upload");
System.out.println(path);
saveFile(photo,path);
return "上传成功";
}
public void saveFile(MultipartFile photo,String path) throws IOException{
//首先判断存储的路径是否存在,不存在就创建
File dir= new File(path);
if(!dir.exists()){dir.mkdir();}
File file=new File(path+photo.getOriginalFilename());
photo.transferTo(file);
}
}
可以看见输出的动态文件地址C:\Users\hyq\AppData\Local\Temp\tomcat-docbase.8080.4125486089777013888\upload
如果出现500,则表示后端出错,首先看看报错原因,如果是文件大小问题,就在propertie中改变max-file-size,可以改成10mb,然后重新上传,如果传输成功则问题解决
拦截器
拦截器应用场景:权限检查、性能监控、通用行为
package com.example.helloworld2.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//继承父类HandlerInterceptor ,可以通过ctrl+左键查看父类
public class LoginInterceptor implements HandlerInterceptor {
@Override
//request前端请求,response给反馈
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws IOException
{
System.out.println("LoginInterceptor");
return true;
}
}
但是该类不会实现,除非配置config文件
package com.example.helloworld2.config;
import com.example.helloworld2.interceptor.LoginInterceptor;
import org.aopalliance.intercept.Interceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(new LoginInterceptor())
//registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");
}
}