欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證

springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了遠(yuǎn)安免費建站歡迎大家使用!

全局異常處理

首先來創(chuàng)建一個sprIngboot的web項目或模塊,目錄結(jié)構(gòu)如下

springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證

實體類User.java

@Data
public class User {
  private String userName;
  private String passwold;
}

實體類UserResult.java 把數(shù)據(jù)封裝到這里返回到客戶端

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserResult {
  private int code;
  private String msg;
}

接下來自定義異常,都繼承自Exception

UserNullException.java 當(dāng)用戶名為空拋出這個異常

public class UserNullException extends Exception{


  public UserNullException() {
    super("用戶名不能為空");
  }
}

PasswoldNullException.java 當(dāng)密碼為空拋出這個異常

public class PasswoldNullException extends Exception {
  public PasswoldNullException() {
    super("密碼不能為空");
  }
}

UserNamePasswordNullException.java 當(dāng)用戶名和密碼都為空拋出這個異常

public class UserNamePasswordNullException extends Exception {
  public UserNamePasswordNullException() {
    super("請輸入用戶名和密碼");
  }
}

UserNameValidationException.jva 當(dāng)輸入不符合要求的用戶名時拋出此異常

public class UserNameValidationException extends Exception{
  public UserNameValidationException() {
    super("請輸入6到16位的數(shù)字或字母組合");
  }
}

UserNamePasswordNullException.java 當(dāng)輸入的密碼不符合要求時拋出這個異常

public class UserNamePasswordNullException extends Exception {
  public UserNamePasswordNullException() {
    super("請輸入用戶名和密碼");
  }
}

通過注解的方式捕獲異常

  1. @Controller + @ExceptionHandler

  2. @ControllerAdvice + @ExceptionHandler

若返回的不是頁面,把@Controller換成@RestController,@ControllerAdvice換成@RestControllerAdvice,也可以在@Controller類下的方法那里加上@ResponseBody

springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證

@Controller + @ExceptionHandler

@Controller:注解此類是Controller類

@ExceptionHandler:此注解注解到類的方法上,當(dāng)此注解里定義的異常拋出時,此方法會被執(zhí)行。如果@ExceptionHandler所在的類是@Controller,則此方法只作用在此類。如果@ExceptionHandler所在的類是@ControllerAdvice,則此方法會作用在全局

在這里我只進(jìn)行了全局異常的捕獲,就是只用了@RestControllerAdvice,對全部controller層進(jìn)行了異常監(jiān)控,任何控制層拋出常,只要@RestControllerAdvice類下@ExceptionHandler注解的value值指定有的都會被執(zhí)行

@RestControllerAdvice
public class UserExceptionHandler {

  @ExceptionHandler(value = UserNullException.class)
  public @ResponseBody UserResult userNull(HttpServletRequest request,Exception ex)
  {
    UserResult userResult=new UserResult();
    userResult.setCode(9);
    userResult.setMsg(ex.getMessage());
    return userResult;
  }
  @ExceptionHandler(value = PasswoldNullException.class)
  public  UserResult passwordNull(HttpServletRequest request,Exception ex)
  {
    UserResult userResult=new UserResult();
    userResult.setCode(10);
    userResult.setMsg(ex.getMessage());
    return userResult;
  }
  @ExceptionHandler(value = UserNamePasswordNullException.class)
  public @ResponseBody UserResult namePassNull(HttpServletRequest request,Exception ex)
  {
    UserResult userResult=new UserResult();
    userResult.setCode(11);
    userResult.setMsg(ex.getMessage());
    return userResult;
  }
  @ExceptionHandler(value = UserNameValidationException.class)
  public @ResponseBody UserResult UserNameValidation(HttpServletRequest request,Exception ex)
  {
    UserResult userResult=new UserResult();
    userResult.setCode(12);
    userResult.setMsg(ex.getMessage());
    return userResult;
  }
  @ExceptionHandler(value = PasswordValidationException.class)
  public @ResponseBody UserResult PasswordValidation(HttpServletRequest request,Exception ex)
  {
    UserResult userResult=new UserResult();
    userResult.setCode(13);
    userResult.setMsg(ex.getMessage());
    return userResult;
  }
}

在這里SignInController.java是全局異常捕獲類

@RestControllerAdvice
@RequestMapping(value = "user/api")
public class SignInController {

  @PostMapping(value = "/sign_in")
  public UserResult signIn(@RequestBody User user) throws Exception {
    if (user.getUserName()==null&&user.getPasswold()==null)
    {
      throw new UserNamePasswordNullException();
    }else if (user.getUserName()==null)
    {
      throw new UserNullException();
    }else if (user.getPasswold()==null)
    {
        throw new PasswoldNullException();
    }else {
      if (userNameRegex(user.getUserName())==false){
       throw new UserNameValidationException();
      }else if (passRegex(user.getPasswold())==false){
        throw new PasswordValidationException();
      }
    }
    return new UserResult(0,"登錄成功");
  }
  /**
   * 正則表達(dá)式:驗證規(guī)則
   */
  public static final String REGEX_PASSWORD = "^[a-zA-Z0-9]{6,16}$";
  /**
   * 手機(jī)號
   */
  String PHONE_NUMBER_REG = "^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$";

  public boolean userNameRegex(String userName)
  {
    return Pattern.matches(REGEX_PASSWORD, userName);
  }
  public boolean passRegex(String password)
  {
    return Pattern.matches(REGEX_PASSWORD, password);
  }
}

加為要求前端傳的是JSON數(shù)據(jù),所以對象參數(shù)前務(wù)必加上@RequestBody這個注解(踩過坑)

springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證

項目中加入了swagger配置(swagger簡單使用),這里用來輸入幾條數(shù)據(jù)進(jìn)行測試

springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

本文名稱:springboot中利用全局異常處理怎么實現(xiàn)登錄注冊驗證
轉(zhuǎn)載源于:http://aaarwkj.com/article44/gpejhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站建設(shè)網(wǎng)頁設(shè)計公司、做網(wǎng)站、網(wǎng)站改版定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
国产精品久久99粉嫩| 精品一区二区三区在线观看国产| 免费在线观看一级av| 国产成十人十综合十亚洲| 久久精品色一情一乱一伦| 亚洲成人精品免费观看| 99精品国产高清一区二区三区| 日韩亚洲精品99综合观看| 久久亚洲精品中文字幕馆| 91久久精品国产一区| 色哟哟视频在线免费观看| 夫妻性生活免费看视频| 中文字幕熟女av一区二区| 午夜丁香婷婷爽少妇av| 亚洲日本韩国三级一区| 亚洲精品紧身裙女教师av| 欧美成人精品三级一二 | 欧美日韩一区二区三区福利| 亚洲午夜精品毛片成人| 一区二区三区乱码av| 成年网站在线91九色| 亚洲一级特黄高清录像| 亚洲综合久久五月天| 欧美日韩久久免费观看| 麻豆剧传媒国产精选av| 亚洲成av人片乱码午夜| 亚洲av最近在线观看| 亚洲欧美日韩1区2区| 亚洲一区二区视频精品| 亚洲天堂成人综合在线| 又黄又爽又刺激的性视频| 熟妇一区二区三区av| 日韩av亚洲在线观看| 日韩精品一区二区三区夜色| 日韩成人一级片在线观看| 中文字幕一区二区不卡顿| 欧美男女精品一区二区三区| 亚洲av正片一区二区三区| 亚洲精品综合在线二区| 午夜午色夜之日本福利片| 日本欧美激情在线观看|