溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

發(fā)布時(shí)間:2021-05-18 10:58:03 來(lái)源:億速云 閱讀:290 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、用戶名密碼都正確的情況下被登錄攔截器攔截

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

控制臺(tái)報(bào)錯(cuò):org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'com.spbt.mapper.EmpeeMapper.selectName'. It's likely that neither a Result Type nor a Result Map was specified.

這個(gè)異常是在mapper文件的<select>標(biāo)簽中沒(méi)有指定 resultType 或者 resultMap,也就是說(shuō)沒(méi)有指定返回值類型或者返回值類型的map集合

所以檢查自己的mapper文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spbt.mapper.EmpeeMapper">

  <select id="selectName" parameterType="String">
    select username from empee where username=#{username}
  </select>

  <select id="selectPwdByName" parameterType="String">
    select password from empee where username=#{username}
  </select>

</mapper>

可以發(fā)現(xiàn)我的<select>標(biāo)簽中沒(méi)有指定 resultType,而是指定的parameterType(參數(shù)類型)

解決:將parameterType修改為resultType

登錄成功:

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

二、頁(yè)面沒(méi)有顯示傳遞的消息

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

這是LoginController的實(shí)現(xiàn)登錄代碼

RequestMapping("/empee/login")
public String login(@RequestParam("username") String username,
          @RequestParam("password") String password,
          Model model, HttpSession session){
  if (empeeMapper.selectName(username)!=null){
    //用戶名存在
    if (empeeMapper.selectPwdByName(username).equals(password)){
      //密碼也正確
      session.setAttribute("loginEmpee",username);
      return "redirect:/main.html";
    }else {
      model.addAttribute("msg","密碼錯(cuò)誤");
      return "redirect:/index";
    }
  }else {
    model.addAttribute("msg","用戶名不存在,請(qǐng)注冊(cè)");
    return "redirect:/index";
  }
}

我輸入錯(cuò)誤的信息,而點(diǎn)擊登錄之后應(yīng)該會(huì)反饋給頁(yè)面

解決:這其實(shí)是一個(gè)非常低級(jí)的錯(cuò)誤,因?yàn)槲以O(shè)置了重定向redirect:/index,所以重新定回這個(gè)頁(yè)面當(dāng)然就沒(méi)有反饋信息了,去掉多余的redirect:/就可以了

三、添加(注冊(cè))成功卻跳轉(zhuǎn)到空白頁(yè)

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

點(diǎn)擊添加,出現(xiàn)空白頁(yè)

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

但是查看自己的數(shù)據(jù)庫(kù)發(fā)現(xiàn)注冊(cè)是成功的

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

控制臺(tái)報(bào)錯(cuò):org.apache.ibatis.binding.BindingException: Mapper method 'com.spbt.mapper.EmpeeMapper.insertEmpee' has an unsupported return type: class com.spbt.pojo.Empee

可以發(fā)現(xiàn)出錯(cuò)原因在于EmpeeMapper文件的insertEmpee方法,而且是返回值類型的錯(cuò)誤

檢查EmpeeMapper:

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

我使用的是Empee類型的返回值類型,而我的Controller文件中并沒(méi)有寫(xiě)他的返回值

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

解決方法:把EmpeeMapper文件的insertEmpee方法修改為void類型

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

添加成功并且成功跳轉(zhuǎn)

SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些

我還在網(wǎng)上看見(jiàn)另一種解決方法,是修改為int類型,經(jīng)過(guò)驗(yàn)證確實(shí)可行

由于之后沒(méi)有進(jìn)行其他操作,因此不清楚這樣做會(huì)對(duì)之后的操作是否有影響,總之還是一步一個(gè)腳印的改下去吧

以上是“SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI