注意点
如果在controller的参数上加了@RequestParam注解,那么在获取这个参数值的时候不会进入到过滤器的方法中
在其他不需要进入自定义过滤的而参数加上注解,不加也可以,只要名称不一样就不会往下走
要获取的token相关参数,不要加此注解
自定义的过滤器可以多个参数获取只需要在入口处,多加一个参数名称判断,且在返回参数值的时候,根据名称不同返回不同的值即可
所以即使比如你的过滤器拦截了所有的请求,但是,对于requestParam这种形式的请求不会经过过滤器,一定要在控制层controller中自己处理!!!
其次有人会问,既然如此为什么不换种办法,用requestbody注解作为参数,但是这个我的请求体的参数是有文件的,不太适合requestbody的形式,对于requestbody这种,使用方法也很多
比如
1.
2.
@PostMapping("handupload")
public Result insertArchiveDB(@RequestBody HandUploads request) {
String type = request.getType();
String year = request.getYear();
String candidateId = request.getCandidateId();
MultipartFile files = request.getFiles();
// 继续处理请求参数
// ...
// 返回结果
}
这里的HandUploads是自定义的一个实体,这些都是可以的,但是要注意@autowired注解,以及get和set方法的编写,这块我也没有暂时深入学习,大致如下
public class HandUploads {
private String type;
private String year;
private String candidateId;
private MultipartFile files;
public String getType() {
return type;
}
@Autowired
public void setType(String type) {
this.type = type;
}
public String getYear() {
return year;
}
@Autowired
public void setYear(String year) {
this.year = year;
}
public String getCandidateId() {
return candidateId;
}
@Autowired
public void setCandidateId(String candidateId) {
this.candidateId = candidateId;
}
public MultipartFile getFiles() {
return files;
}
@Autowired
public void setFiles(MultipartFile files) {
this.files = files;
}
}
综上主要就是因为要根据token处理请求,发现我用请求参数的写法似乎过滤器不管用,查阅资料后故作记录