登陆点击后只会显示用户名不存在,不填或填写正确都不会有对应显示

登陆点击后只会显示用户名不存在,不填或填写正确都不会有对应显示

html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <link rel="stylesheet" href="/resources/layui/css/layui.css">
   <style>
       body{
           background-color:#f2f2f2 ;
       }
       .oa-container{
           position:absolute;
           width: 400px;
           height: 350px;
           top: 50%;
           left: 50%;
           padding: 20px;
           margin-left: -200px;
           margin-top: -175px;
       }

       #username,#password{
           text-align: center;
           font-size:24px;
       }
   </style>
</head>
<body>
<div class="oa-container">
   <h1 style="text-align: center;margin-bottom:20px">OA系统</h1>
   <form class="layui-from">

       <div class="layui-form-item">
           <input type="text" id="username" lay-verify="required" name="username" placeholder="请输入用户名" autocomplete="off" class="layui-input">
       </div>

       <div class="layui-form-item">
           <input type="password" id="password" lay-verify="required" name="password" placeholder="请输入密码" autocomplete="off" class="layui-input">
       </div>

       <div class="layui-form-item">
           <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="login">登录</button>
       </div>
   </form>
</div>
<script src="/resources/layui/layui.all.js"></script>
<script>
   layui.form.on("submit(login)",function(formdata){
       console.log(formdata);
       layui.$.ajax({
           url:"/check_login",
           data: formdata.field,
           type:"post",
           dataType:"json",
           success:function(json){
               console.log(json);
               if(json.code=="0"){
                   layui.layer.msg("登陆成功!");
               }else{
                   layui.layer.msg(json.message);
               }
           }
       })
       return false;
   })
</script>
</body>
</html>


mybatisutil

package com.wjb.oa.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


import java.io.Reader;
import java.util.function.Function;

public class MybatisUtils {
   private static SqlSessionFactory sqlSessionFactory=null;
   static {
       Reader reader=null;
       try{
           reader= Resources.getResourceAsReader("mybatis-config.xml");
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
       }catch(Exception e){
           throw new ExceptionInInitializerError(e);
       }
   }

   public static Object excuteQuery(Function<SqlSession, Object> func){
       SqlSession sqlSession=sqlSessionFactory.openSession();
       try{
           Object obj=func.apply(sqlSession);
           return obj;
       }
       finally {
           sqlSession.close();
       }
   }

   public static Object excuteUpdate(Function<SqlSession,Object> func){
       SqlSession sqlSession=sqlSessionFactory.openSession(false);
       try{
           Object obj=func.apply(sqlSession);
           sqlSession.commit();
           return obj;
       }catch (RuntimeException e){
           sqlSession.rollback();
           throw e;
       }finally {
           sqlSession.close();
       }
   }
}

dao

package com.wjb.oa.dao;

import com.wjb.oa.entity.User;
import com.wjb.oa.utils.MybatisUtils;

public class UserDao {
   public User selectByUsername(String username){
        User user=(User) MybatisUtils.excuteQuery(sqlSession -> sqlSession.selectOne("usermapper.selectByUsername", username));
       return user;
   }
}

service

package com.wjb.oa.service;

import com.wjb.oa.dao.UserDao;
import com.wjb.oa.entity.User;
import com.wjb.oa.service.exception.BussinessException;

public class UserService {
   private UserDao userDao = new UserDao();
   public User checkLogin(String username,String password){
       User user=userDao.selectByUsername(username);
       if(user==null){
           //抛出用户不存在异常
           throw new BussinessException("L001", "用户名不存在");
       }
       if(!password.equals(user.getPassword())){
           throw new BussinessException("L002", "密码错误");
       }
       return user;
   }

}


controller

package com.wjb.oa.controller;

import com.alibaba.fastjson.JSON;
import com.wjb.oa.entity.User;
import com.wjb.oa.service.UserService;
import com.wjb.oa.service.exception.BussinessException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@WebServlet(name = "LoginServlet" ,urlPatterns = "/check_login")
public class LoginServlet extends HttpServlet {
   Logger logger = LoggerFactory.getLogger(LoginServlet.class);
   private UserService userService=new UserService();
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       request.setCharacterEncoding("utf-8");
       response.setContentType("text/html;charset=utf-8");
       //接受用户输入
       String username=request.getParameter("username");
       String password = request.getParameter("password");
       Map<String, Object> result = new HashMap<>();
      try {
          //调用业务逻辑
          User user = userService.checkLogin(username, password);
          result.put("code","0");
          result.put("message", "success");
      }catch (BussinessException e){
           logger.error(e.getMessage(),e);
          result.put("code",e.getCode());
          result.put("message", e.getMessage());
      }catch (Exception e){
          logger.error(e.getMessage(),e);
          result.put("code",e.getClass().getSimpleName());
          result.put("message", e.getMessage());
      }
      //返回对应结果
      String json=JSON.toJSONString(result);
       response.getWriter().println(json);
   }

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   }
}

exception

package com.wjb.oa.service.exception;

/**
* 业务逻辑异常
*/
public class BussinessException extends RuntimeException{
   private String code;//一场编码,异常的标识
   private  String message;//异常具体的文本消息
   public BussinessException(String code,String msg){
       super(code+":"+msg);
       this.code=code;
       this.message=msg;
   }

   public String getCode() {
       return code;
   }

   public void setCode(String code) {
       this.code = code;
   }

   @Override
   public String getMessage() {
       return message;
   }

   public void setMessage(String message) {
       this.message = message;
   }
}

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,这种错误可以通过调试,看一下问题出现在哪里。如果使用了别人的框架,可以检查一下是否拼写有错,导致程序出错。

祝学习愉快~

好帮手慕阿慧 2020-07-24 19:54:31

同学你好,layui框架的类名写错了,应该是layui-form,如下:

http://img1.sycdn.imooc.com//climg/5f1acbcc0914908d03510136.jpg

祝学习愉快~

  • 提问者 warren_au #1
    老师非常感谢您解决了我的问题,想问一下这种错误怎么检查出来,而且这种错误和我之前书写的代码没有直接性的逻辑关系啊。。
    2020-07-25 10:18:11
好帮手慕阿慧 2020-07-24 18:50:45

同学你好,

1、建议同学在程序中添加断点,如下:

http://img1.sycdn.imooc.com//climg/5f1abbcb09a4e6cb06980240.jpg

以debug模式启动项目,跟踪一下项目运行过程,如下:

http://img1.sycdn.imooc.com//climg/5f1abbfb098926c403000057.jpg

2、建议同学看一下浏览器控制台有没有错误信息,如下:

http://img1.sycdn.imooc.com//climg/5f1abc2f09c4ce8a05930123.jpg

祝学习愉快~

  • 提问者 warren_au #1
    控制台没有报错
    2020-07-24 19:03:23
  • 提问者 warren_au #2
    我的代码您测试了吗?可以运行吗还是不能运行?不知道是不是代码的问题还是什么,您可以检查一下再回复我吗?
    2020-07-24 19:05:54
好帮手慕阿慧 2020-07-24 18:15:07

同学你好,同学在service方法中添加输出语句,如下:

http://img1.sycdn.imooc.com//climg/5f1abd53097dbcb705910121.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 warren_au #1
    但是在5-4课程中老师没有进行这一步操作啊
    2020-07-24 18:19:02
  • 提问者 warren_au #2
    您是在回答5-4之后的问题吗,我还没有做到登录index界面,在这之前我进行账号登陆验证时就出现不会显示正确信息的问题了
    2020-07-24 18:24:36
  • 提问者 warren_au #3
    我的问题出在无论我怎么验证登录都显示用户名不存在,无论填写正确或者错误或者不填写,我的代码未涉及5-5之后的内容,请帮我解决一下,如果没有涉及到5-5之后的内容,那么您上面说的那个错误,我在5-4甚至5-5中都没有看到老师讲解过这一段
    2020-07-24 18:27:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师