/framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
Java | 55 lines | 40 code | 3 blank | 12 comment | 4 complexity | 75dcf575964ced690a68d0ee311b418e MD5 | raw file
- package com.ruoyi.framework.interceptor;
- import java.lang.reflect.Method;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.stereotype.Component;
- import org.springframework.web.method.HandlerMethod;
- import org.springframework.web.servlet.HandlerInterceptor;
- import com.alibaba.fastjson.JSONObject;
- import com.ruoyi.common.annotation.RepeatSubmit;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.utils.ServletUtils;
- /**
- * 防止重复提交拦截器
- *
- * @author ruoyi
- */
- @Component
- public abstract class RepeatSubmitInterceptor implements HandlerInterceptor
- {
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
- {
- if (handler instanceof HandlerMethod)
- {
- HandlerMethod handlerMethod = (HandlerMethod) handler;
- Method method = handlerMethod.getMethod();
- RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class);
- if (annotation != null)
- {
- if (this.isRepeatSubmit(request, annotation))
- {
- AjaxResult ajaxResult = AjaxResult.error(annotation.message());
- ServletUtils.renderString(response, JSONObject.toJSONString(ajaxResult));
- return false;
- }
- }
- return true;
- }
- else
- {
- return true;
- }
- }
- /**
- * 验证是否重复提交由子类实现具体的防重复提交的规则
- *
- * @param request
- * @return
- * @throws Exception
- */
- public abstract boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation);
- }