登录框功能实现

参考文章:https://blog.csdn.net/qq_43711438/article/details/116108081
参考视频:https://www.bilibili.com/video/BV18f4y1D72h?p=2&share_source=copy_web
(ps:目前网上很多文章对小白很不友好,虽然从外网上找了个很成熟的项目搭建成功了,但还是找个简单的视频好好学学,稍安勿躁)

基础模型设置

image.png

分析

  1. 1、创建数据库,设计关键字段
  2. 2、前台页面
  3. 登录页面 login.jsp
  4. 用户登录 JS校验
  5. 登录表单验证
  6. 1、给登录按钮绑定点击事件
  7. 2、获取用户的用户名和密码的值
  8. 3、如果用户名字为空,提示用户(span标签赋值),并且return
  9. 4、如果密码名字为空,提示用户(span标签赋值),并且return
  10. 5、如果都不为空,则手动提交表单
  11. 首页(登录后的页面) index.jsp
  12. 3、后台实现
  13. 登录功能
  14. 1、接收客户端的请求(接收参数:姓名,密码)
  15. 2、参数的非空判断,不要相信前端的判断
  16. 如果参数非空,通过消息模型对象返回数据,返回结果(设置状态,设置提示信息、回显数据)
  17. 将消息模型对象设置到request作用域中,请求转发跳转到登录页面return
  18. 3、通过用户名查询用户对象(通过用户名查询用户)
  19. 4、判断用户名是否为空
  20. 如果为空,通过消息模型对象返回数据,返回结果(设置状态,设置提示信息、回显数据)
  21. 将消息模型对象设置到request作用域中,请求转发跳转到登录页面return
  22. 5、如果用户名存在,则将数据库中查询的用户密码与前台传递的密码作比较
  23. 如果不相等,通过消息模型对象返回数据,返回结果(设置状态,设置提示信息、回显数据)
  24. 将消息模型对象设置到request作用域中,请求转发跳转到登录页面return
  25. 如果相等,表示登录成功
  26. 将用户信息设置到session的作用域中
  27. 请求转发到登录页面(或者重定向到登录页面中)
  28. controller层(请求转发,响应结果)
  29. 1、接受客户的请求(接收参数:姓名、密码)
  30. 2、调用service层方法,返回消息模型对象
  31. 3、判断消息模型状态码
  32. 如果状态码失败
  33. 将消息模型设置到request作用域中,然后请求转发挑战到登录界面
  34. 如果状态码成功
  35. 将消息模型中的用户信息设置到session作用域中,然后重定向跳转到index.jsp
  36. service层(业务逻辑)
  37. 1、参数的非空判断
  38. 如果参数为空
  39. 将状态码,提示信息,回显数据设置到消息模型回显对象中,return消息模型对象
  40. 2、调用dao层的查询方法,通过用户名查询用户对象
  41. 3、判断用户对象是否为空
  42. 如果用户对象为空
  43. 将状态码,提示信息,回显数据设置到消息模型回显对象中,return消息模型对象
  44. 4、判断数据库中查询的用户密码与前台查询的密码做比较
  45. 如果不相等,将状态码,提示信息,回显数据设置到消息模型回显对象中,return消息模型对象
  46. 5、登录成功,成功状态,提示信息,用户对象信息设置消息模型对象,并return
  47. mapperdao层)
  48. 定义对应的接口
  49. 分层思想:
  50. controller
  51. 接受请求
  52. (调用service层,返回结果)
  53. 响应结果
  54. service
  55. 业务逻辑判断
  56. mapperdao)层
  57. 接口类
  58. mapper.xmlmybatis与数据库相关的操作
  59. entitypomodel
  60. JavaBean实体
  61. util
  62. 工具类(通用的类/方法)
  63. test
  64. 测试类/方法

具体代码

目录

login.jsp

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: 15655
  4. Date: 2022/2/17
  5. Time: 15:25
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>用户登录</title>
  12. </head>
  13. <body>
  14. <div style="text-align: center">
  15. <form action="/login" method="post" id="loginForm">
  16. 姓名:<input type="text" name="uname" id="uname"> <br>
  17. 密码:<input type="password" name="upwd" id="upwd"> <br>
  18. <span id="msg" style="font-size: 12px;color:red"></span><br>
  19. <button type="button" id="loginBtn">登录</button>
  20. <button type="button">注册</button>
  21. </form>
  22. </div>
  23. </body>
  24. <%--引入jqueryjs文件--%>
  25. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.js"></script>
  26. <script type="text/javascript">
  27. /* 1、给登录按钮绑定点击事件(通过id选择器绑定)
  28. // 2、获取用户的用户名和密码的值
  29. // 3、如果用户名字为空,提示用户(span标签赋值),并且return
  30. // 4、如果密码名字为空,提示用户(span标签赋值),并且return
  31. // 5、如果都不为空,则手动提交表单*/
  32. $("#loginBtn").click(function (){
  33. var uname = $("#uname").val();
  34. var upwd = $("#upwd").val();
  35. if(isEmpty(uname) || isEmpty(upwd)){
  36. $("#msg").html("用户名或密码不能为空!");
  37. return;
  38. }
  39. $("#loginForm").submit();
  40. });
  41. function isEmpty(str){
  42. if (str == null || str.trim() == ""){
  43. return true;
  44. }
  45. else {
  46. return false;
  47. }
  48. }
  49. </script>
  50. </html>