使用SpringBoot实现登录注册的几个问题

Posted kzyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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
登录成功:
技术图片


二、页面没有显示传递的消息
技术图片
这是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:/就可以了


三、添加(注册)成功却跳转到空白页
技术图片

 


 点击添加,出现空白页

技术图片

但是查看自己的数据库发现注册是成功的

技术图片

 

 

 

 控制台报错: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:

技术图片

 

 我使用的是Empee类型的返回值类型,而我的Controller文件中并没有写他的返回值

技术图片

 

 解决方法:把EmpeeMapper文件的insertEmpee方法修改为void类型

技术图片

 

添加成功并且成功跳转
技术图片
我还在网上看见另一种解决方法,是修改为int类型,经过验证确实可行
由于之后没有进行其他操作,因此不清楚这样做会对之后的操作是否有影响,总之还是一步一个脚印的改下去吧

最后推荐一个非常不错的SpringBoot学习视频: https://www.bilibili.com/video/av75233634
这是讲师的博客: https://www.cnblogs.com/hellokuangshen

以上是关于使用SpringBoot实现登录注册的几个问题的主要内容,如果未能解决你的问题,请参考以下文章

Andorid前端+SpringBoot后端+MySql一个登录注册小案例的实现

JavaWeb-SpringBoot_使用H2数据库实现用户注册登录

springboot 整合 MongoDB 实现登录注册,html 页面获取后台参数的方法

springboot vue实现登录注册功能

SpringBoot+Mybatis +vue 实现登录 注册 还有验证码的。

SpringBoot注册登录:注册--验证账号密码是否符合格式及后台完成注册功能