zoukankan      html  css  js  c++  java
  • 使用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文件中并没有写他的返回值

     解决方法1:把EmpeeMapper文件的insertEmpee方法修改为void类型,因为在EmpeeMapper.xml文件中我的这个方法没有声明返回值

    解决方法2:在EmpeeMapper.xml文件中为这个方法添加一个该类型(Empee)的返回值  resultType="Empee"

    添加成功并且成功跳转

    我还在网上看见另一种解决方法,是修改为int类型,经过验证确实可行
    由于之后没有进行其他操作,因此不清楚这样做会对之后的操作是否有影响

    最后推荐一个非常不错的SpringBoot学习视频: https://www.bilibili.com/video/av75233634
    这是讲师的博客: https://www.cnblogs.com/hellokuangshen
  • 相关阅读:
    对数据库进行增删改查操作
    Chromium网页Graphics Layer Tree创建过程分析
    苹果产品设计中鲜为人知的10个细节
    翻翻git之---自己定义邮件发送buttonSendButton(流程分析,实现思路能够学习下)
    pascal+sublime搭建Pascal学习环境
    我们的一个已投产项目的高可用数据库实战
    开源 免费 java CMS
    上海居住证续签流程须知
    【LeetCode OJ 232】Implement Queue using Stacks
    Android学习笔记之:android更新ui的几种经常用法
  • 原文地址:https://www.cnblogs.com/kzyuan/p/12396177.html
Copyright © 2011-2022 走看看