麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

Spring mvc防止數(shù)據(jù)重復(fù)提交的方法

2024-07-14 08:42:58
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了Spring mvc如何防止數(shù)據(jù)重復(fù)提交,供大家參考,具體內(nèi)容如下

方法分析:

這里使用的防止數(shù)據(jù)重復(fù)提交的方法是使用token,給所有的url加一個(gè)攔截器,在攔截器里面用java的UUID生成一個(gè)隨機(jī)的UUID并把這個(gè)UUID放到session里面,然后在瀏覽器做數(shù)據(jù)提交的時(shí)候?qū)⒋薝UID提交到服務(wù)器。服務(wù)器在接收到此UUID后,檢查一下該UUID是否已經(jīng)被提交,如果已經(jīng)被提交,則不讓邏輯繼續(xù)執(zhí)行下去。

源碼實(shí)現(xiàn):

注解Token代碼:

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Token {  boolean save() default false;  boolean remove() default false;}

攔截器TokenInterceptor代碼:

public class TokenInterceptor extends HandlerInterceptorAdapter {  @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {    if (handler instanceof HandlerMethod) {      HandlerMethod handlerMethod = (HandlerMethod) handler;      Method method = handlerMethod.getMethod();      Token annotation = method.getAnnotation(Token.class);      if (annotation != null) {        boolean needSaveSession = annotation.save();        if (needSaveSession) {          request.getSession(false).setAttribute("token", UUID.randomUUID().toString());        }        boolean needRemoveSession = annotation.remove();        if (needRemoveSession) {          if (isRepeatSubmit(request)) {            return false;          }          request.getSession(false).removeAttribute("token");        }      }      return true;    } else {      return super.preHandle(request, response, handler);    }  }  private boolean isRepeatSubmit(HttpServletRequest request) {    String serverToken = (String) request.getSession(false).getAttribute("token");    if (serverToken == null) {      return true;    }    String clinetToken = request.getParameter("token");    if (clinetToken == null) {      return true;    }    if (!serverToken.equals(clinetToken)) {      return true;    }    return false;  }}

Spring MVC的配置文件:

<!-- 攔截器配置 -->  <mvc:interceptors>    <!-- 配置Token攔截器,防止用戶重復(fù)提交數(shù)據(jù) -->    <mvc:interceptor>      <mvc:mapping path="/**"/>      <bean class="com.storezhang.web.spring.TokenInterceptor"/>    </mvc:interceptor></mvc:interceptors>

使用方法:

1、在需要生成token的controller上增加@Token(save=true); 
2、而在需要檢查重復(fù)提交的controller上添加@Token(remove=true)就可以了。

另外,你需要在view里在form里增加下面代碼:

<input type="hidden" name="token" value="${token}" />

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久中文字幕 | 免费国产一级淫片 | 视频一区免费观看 | 黄色片网站在线免费观看 | 日韩黄色免费电影 | 黄色片快播 | 中国美女一级黄色大片 | 91一区二区三区久久久久国产乱 | 亚洲特黄 | av视屏| 一级免费黄色免费片 | 99sesese| 欧美一级免费在线观看 | 在线观看一二三 | 免费看搡女人无遮挡的视频 | 日本精品久久久久 | 九九热播视频 | 91社区在线观看 | 欧美a级在线免费观看 | 亚洲最新黄色网址 | 久久精品国产99国产精品澳门 | 一级免费在线视频 | 中文字幕亚洲欧美 | 在线观看免费精品 | 宅男噜噜噜66国产在线观看 | 国产精品久久久久久久久久久久久久久 | 国产精品视频久久久 | 日本成人在线免费 | 国内精品久久久久久久星辰影视 | 午夜精品福利影院 | av在线播放网址 | 免费a级毛片永久免费 | 91在线视频精品 | 精品一区二区免费视频视频 | 国产成人自拍av | 亚洲精品a级 | 成人性视频欧美一区二区三区 | 久草视频国产在线 | 欧美五月婷婷 | 久久久入口 | 国产艳妇av视国产精选av一区 |