import com.alpha.redis.service.RedisService;
import com.alpha.web.config.RequestInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 并发拦截器
* @author hui66
*
*/
@Service
public class ConcurrenceInterceptor extends RequestInterceptor {
@Autowired
private RedisService redisService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return beginControlErupt(request, response);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
endControlErupt(request);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
endControlErupt(request);
}
public void endControlErupt(HttpServletRequest request) {
String uri = request.getRequestURI();
uri = uri.replace("//", "/");
String autoKey = "currence";
if(SessionInterceptor.getCurrentCustomer()!=null) {
if(uri.contains("/ptn")) {
String userKey = request.getParameter("openId");
if(userKey == null) {
userKey = request.getParameter("phone");
}
if(userKey!=null) {
autoKey = uri+":"+userKey;
}else {
return ;
}
}else {
autoKey = uri+":"+SessionInterceptor.getCurrentCustomer().getUserId();
}
}else if(SessionInterceptor.getSysUser()!=null){
autoKey = uri+":"+SessionInterceptor.getSysUser().getId();
}
endControlErupt(autoKey,uri);
}
public boolean beginControlErupt(HttpServletRequest request,HttpServletResponse response) {
String uri = request.getRequestURI();
if(uri.contains("/upload")) {
return true;
}
String key = uri;
key = key.replace("//", "/");
String autoKey = "currence";
if(SessionInterceptor.getCurrentCustomer()!=null) {
if(uri.contains("/ptn")) {
String userKey = request.getParameter("openId");
if(userKey == null) {
userKey = request.getParameter("phone");
}
if(userKey!=null) {
autoKey = key+":"+userKey;
}else {
return true;
}
}else {
autoKey = key+":"+SessionInterceptor.getCurrentCustomer().getUserId();
}
}else if(SessionInterceptor.getSysUser()!=null){
autoKey = key+":"+SessionInterceptor.getSysUser().getId();
}
return beginControlErupt(autoKey,uri,response);
}
@Override
public int getOrder() {
return 3;
}
@Override
public String getPathPatterns() {
return "/**";
}
}
java防高并发请求拦截器
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 单刀直入 输出日志 小结 当执行了countDownLatch.countDown()之后,计数器由1变为0,同时...