国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

煙臺(tái)網(wǎng)站制作專業(yè)今日熱點(diǎn)

煙臺(tái)網(wǎng)站制作專業(yè),今日熱點(diǎn),做日本外貿(mào)網(wǎng)站設(shè)計(jì),手機(jī)能建設(shè)網(wǎng)站防重復(fù)提交:自定義注解 攔截器(HandlerInterceptor) 一、思路: 1、首先自定義注解; 2、創(chuàng)建攔截器實(shí)現(xiàn)類(自定義類名稱),攔截器(HandlerInterceptor); 3…

防重復(fù)提交:自定義注解 + 攔截器(HandlerInterceptor)

一、思路:

1、首先自定義注解;

2、創(chuàng)建攔截器實(shí)現(xiàn)類(自定義類名稱),攔截器(HandlerInterceptor);

3、創(chuàng)建類:配置攔截器路徑(攔截URL規(guī)則);

二、代碼示例:

1、首先自定義注解;

import java.lang.annotation.*;/*** @ClassName Resubmit* @Descripition 自定義注解-防重復(fù)提交* @Author * @Date 2023/8/31 10:38*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Resubmit {/*** 默認(rèn)過(guò)期時(shí)間* 單位:秒** @return*/int value() default 100;/*** 頻繁請(qǐng)求提示語(yǔ)** @return*/String messge() default "請(qǐng)求過(guò)于頻繁,請(qǐng)稍后再試!";}

2、創(chuàng)建攔截器實(shí)現(xiàn)類(自定義類名稱),攔截器(HandlerInterceptor);

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;/*** @ClassName ResubmitInterceptorUtil* @Descripition 防重復(fù)提攔截器工具類* @Author * @Date 2023/8/31 10:52*/
@Slf4j
@Component
public class ResubmitInterceptorUtil implements HandlerInterceptor {// key: 固定前綴private static final String FIXED_SESSION = "repeatData";@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {try {if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod = (HandlerMethod) handler;// 請(qǐng)求方法Method method = handlerMethod.getMethod();// 獲取自定義注解-防重復(fù)注解(@Resubmit)Resubmit annotation = method.getAnnotation(Resubmit.class);// 判斷方法是否添加自定義注解(@Resubmit)if (annotation != null) {//如果重復(fù)相同數(shù)據(jù)if (repeatDataValidator(request)) {// 自定義返回結(jié)果類Result result = new Result();result.setCode(500);result.setMessage(annotation.messge());// 設(shè)置字符集編碼response.setCharacterEncoding("UTF-8");// response.getWriter().write(JSON.toJSONString("請(qǐng)勿頻繁提交請(qǐng)求,稍后再試."));response.getWriter().write(JSON.toJSONString(result));return false;} else {return true;}}return true;} else {return true;}} catch (IOException e) {log.error("防重復(fù)提攔截器工具類異常", e);return false;}}/*** 驗(yàn)證同一個(gè)url數(shù)據(jù)是否相同提交,相同返回true** @param request* @return*/private boolean repeatDataValidator(HttpServletRequest request) {// 獲取POST請(qǐng)求體-body-入?yún)tring params = getRequestBodyParam(request);// 獲取請(qǐng)求路徑String url = request.getRequestURI();Map<String, String> map = new HashMap<>();// 組裝Map key: url、 value:url+請(qǐng)求方法體+時(shí)間map.put(url, params);String nowUrlParams = JSON.toJSONString(map);Object preUrlParams = request.getSession().getAttribute(FIXED_SESSION);//如果上一個(gè)數(shù)據(jù)為null,表示還沒(méi)有訪問(wèn)頁(yè)面if (preUrlParams == null) {//如果上一個(gè)數(shù)據(jù)為null,表示還沒(méi)有訪問(wèn)頁(yè)面request.getSession().setAttribute(FIXED_SESSION, nowUrlParams);return false;} else {//如果上次url+數(shù)據(jù)和本次url+數(shù)據(jù)相同,則表示重復(fù)添加數(shù)據(jù)if (preUrlParams.equals(nowUrlParams)) {log.info("[請(qǐng)求頻繁提交 repeatDataValidator URL :{}; param :{}]", url, params);return true;} else {//如果上次 url+數(shù)據(jù) 和本次url加數(shù)據(jù)不同,則不是重復(fù)提交request.getSession().setAttribute(FIXED_SESSION, nowUrlParams);return false;}}}/*** 獲取請(qǐng)求體-body-入?yún)?* @param request* @return*/private String getRequestBodyParam(HttpServletRequest request) {BufferedReader bufferedReader = null;StringBuffer stringBuffer = new StringBuffer();try {bufferedReader = request.getReader();String str = null;while ((str = bufferedReader.readLine()) != null) {stringBuffer.append(str);}bufferedReader.close();} catch (IOException e) {log.error("解析入?yún)惓?#xff01;!!", e);} finally {if (bufferedReader != null) {try {bufferedReader.close();} catch (IOException e) {log.error("解析入?yún)惓?#xff01;!!", e);}}}return stringBuffer.toString();}
}

3、創(chuàng)建類:配置攔截器路徑(攔截URL規(guī)則);

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @ClassName WebMvcConfig* @Descripition 配置攔截路徑* @Author * @Date 2023/9/1 10:08*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Autowiredprivate ResubmitInterceptorUtil resubmitInterceptorUtil;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 配置攔截類registry.addInterceptor(resubmitInterceptorUtil)// 設(shè)置攔截路徑URL.addPathPatterns("/**");}}
http://aloenet.com.cn/news/47709.html

相關(guān)文章:

  • 做啥英文網(wǎng)站賺錢關(guān)鍵詞排名公司
  • 美國(guó)一般用什么做網(wǎng)站主頁(yè)seo搜索引擎優(yōu)化工資多少錢
  • 福田做網(wǎng)站的公司sem全稱
  • 網(wǎng)絡(luò)空間租用價(jià)格seo整站優(yōu)化服務(wù)
  • 網(wǎng)站后臺(tái)管理的超鏈接怎么做重慶企業(yè)站seo
  • 煎蛋網(wǎng) wordpress南通seo網(wǎng)站優(yōu)化軟件
  • 上海自助建站官網(wǎng)廣東做seo的公司
  • 黃石網(wǎng)站制作上海推廣系統(tǒng)
  • 做網(wǎng)站什么配置夠用百度營(yíng)銷搜索推廣
  • 寶安網(wǎng)站建設(shè)-信科網(wǎng)絡(luò)排行榜
  • 網(wǎng)站用cms百度在線使用網(wǎng)頁(yè)版
  • 網(wǎng)站建設(shè)重點(diǎn)成品短視頻app下載有哪些
  • 谷歌有做網(wǎng)站建設(shè)莆田百度推廣開戶
  • 網(wǎng)站建設(shè)建議推廣價(jià)格一般多少
  • 湖南網(wǎng)站建設(shè)報(bào)價(jià)網(wǎng)站網(wǎng)絡(luò)推廣推廣
  • 做網(wǎng)站就業(yè)要會(huì)什么問(wèn)題公司網(wǎng)址怎么注冊(cè)
  • 重慶平臺(tái)網(wǎng)站建設(shè)設(shè)計(jì)獲客軟件
  • 定制做網(wǎng)站費(fèi)用百度上海推廣優(yōu)化公司
  • 一般網(wǎng)站的寬度桂平seo快速優(yōu)化軟件
  • 山東食品行業(yè)網(wǎng)站模板百度推廣創(chuàng)意范例
  • 法制教育網(wǎng)站廣州網(wǎng)站建設(shè)公司
  • 一個(gè)網(wǎng)站開發(fā)背景是什么semantic scholar
  • 微信網(wǎng)站與響應(yīng)式網(wǎng)站圖片優(yōu)化是什么意思
  • 上海網(wǎng)站代優(yōu)化教你免費(fèi)申請(qǐng)個(gè)人網(wǎng)站
  • 網(wǎng)站開發(fā)研究?jī)?nèi)容怎么寫小程序開發(fā)平臺(tái)有哪些
  • 上海電子通科技網(wǎng)站建設(shè)西安關(guān)鍵詞排名提升
  • 網(wǎng)站搭建徐州百度網(wǎng)絡(luò)360廣告推廣平臺(tái)
  • 做網(wǎng)站軟件 手機(jī)seo搜索引擎優(yōu)化營(yíng)銷案例
  • 品牌微營(yíng)銷網(wǎng)站建設(shè)b站黃頁(yè)推廣
  • 網(wǎng)站建設(shè)策劃書附錄網(wǎng)站優(yōu)化的意義