}
}
}
}
@Data
public class ResponseMessage implements Serializable {
private static final long serialVersionUID = -2988364810346364595L;
/**
- 1:成功 -1:失败
*/
private int code;
/**
- 错误信息
*/
private String errorMsg;
/**
- 返回数据
*/
private T data;
public ResponseMessage(int code, String errorMsg, T data) {
this.code = code;
this.errorMsg = errorMsg;
this.data = data;
}
public ResponseMessage(int code, String errorMsg) {
this.code = code;
this.errorMsg = errorMsg;
}
public ResponseMessage() {
}
}
拦截器编写
/**
-
IP请求次数限制
-
@author 向振华
-
@date 2018/11/28 10:55
*/
public class CounterInterceptor extends BaseInterceptor {
@Resource
private RedisTemplate redisTemplate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String ip = getRemoteHost(request);
String key = ip + request.getRequestURI() + request.getSession().getId();
Long increment = redisTemplate.opsForValue().increment(key, 1);
if (increment == 1) {
//设置有效期一分钟
redisTemplate.expire(key, 60, TimeUnit.SECONDS);
}
//次数限制为5次
if (increment > 5) {
sendMsg(request, response, -1, “次数限制”, request.getRequestURI());
return false;
}
return true;
}
/**
-
获取请求IP地址
-
@param request
-
@return
*/
public String getRemoteHost(HttpServletRequest request) {
String ip = request.getHeader(“x-forwarded-for”);
if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“Proxy-Client-IP”);
}
if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“WL-Proxy-Client-IP”);
}
if (ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip.equals(“0:0:0:0:0:0:0:1”) ? “127.0.0.1” : ip;
}
}
拦截器配置
/**
-
拦截器配置
-
@author 向振华
-
@date 2018/11/28 11:30
*/
@Configuration
@EnableTransactionManagement
public class MyWebAppConfig extends WebMvcConfigurerAdapter {
@Bean
CounterInterceptor counterInterceptor() {
return new CounterInterceptor();
}
/**
-
拦截器配置
-
@param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
//配置IP请求次数限制
registry.addInterceptor(counterInterceptor());
super.addInterceptors(registry);
写在最后
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
最后祝愿各位身体健康,顺利拿到心仪的offer!
由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里
是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
最后祝愿各位身体健康,顺利拿到心仪的offer!
由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里
[外链图片转存中…(img-1O5jqgFF-1714439768870)]
[外链图片转存中…(img-BbNnEo2w-1714439768871)]
[外链图片转存中…(img-fRk5vPZn-1714439768871)]