1. 程式人生 > 程式設計 >SpringBoot實現登入註冊常見問題解決方案

SpringBoot實現登入註冊常見問題解決方案

一、使用者名稱密碼都正確的情況下被登入攔截器攔截

SpringBoot實現登入註冊常見問題解決方案

控制檯報錯: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.

這個異常是在mapper檔案的<select>標籤中沒有指定 resultType 或者 resultMap,也就是說沒有指定返回值型別或者返回值型別的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>

可以發現我的<select>標籤中沒有指定 resultType,而是指定的parameterType(引數型別)

解決:將parameterType修改為resultType

登入成功:

SpringBoot實現登入註冊常見問題解決方案

二、頁面沒有顯示傳遞的訊息

SpringBoot實現登入註冊常見問題解決方案

這是LoginController的實現登入程式碼

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","密碼錯誤");
      return "redirect:/index";
    }
  }else {
    model.addAttribute("msg","使用者名稱不存在,請註冊");
    return "redirect:/index";
  }
}

我輸入錯誤的資訊,而點選登入之後應該會反饋給頁面

解決:這其實是一個非常低階的錯誤,因為我設定了重定向redirect:/index,所以重新定回這個頁面當然就沒有反饋資訊了,去掉多餘的redirect:/就可以了

三、新增(註冊)成功卻跳轉到空白頁

SpringBoot實現登入註冊常見問題解決方案

點選新增,出現空白頁

SpringBoot實現登入註冊常見問題解決方案

但是檢視自己的資料庫發現註冊是成功的

SpringBoot實現登入註冊常見問題解決方案

控制檯報錯:org.apache.ibatis.binding.BindingException: Mapper method 'com.spbt.mapper.EmpeeMapper.insertEmpee' has an unsupported return type: class com.spbt.pojo.Empee

可以發現出錯原因在於EmpeeMapper檔案的insertEmpee方法,而且是返回值型別的錯誤

檢查EmpeeMapper:

SpringBoot實現登入註冊常見問題解決方案

我使用的是Empee型別的返回值型別,而我的Controller檔案中並沒有寫他的返回值

SpringBoot實現登入註冊常見問題解決方案

解決方法:把EmpeeMapper檔案的insertEmpee方法修改為void型別

SpringBoot實現登入註冊常見問題解決方案

新增成功並且成功跳轉

SpringBoot實現登入註冊常見問題解決方案

我還在網上看見另一種解決方法,是修改為int型別,經過驗證確實可行

由於之後沒有進行其他操作,因此不清楚這樣做會對之後的操作是否有影響,總之還是一步一個腳印的改下去吧

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。