Java入门系列14 -- 用户登录案例实现

2021-12-12  本文已影响0人  YanZi_33
案例用户登录
image.png image.png image.png image.png image.png image.png image.png image.png image.png
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <div style="text-align: center">
        <form action="/login" method="post" id="loginFrom">
            姓名: <input type="text" name="name"> <br>
            密码: <input type="password" name="password"> <br>
            <span id="msg" style="font-size: 12px;color: red"></span> <br>
            <button type="button">登录</button>
            <button type="button">注册</button>
        </form>
    </div>
</body>
</html>
image.png image.png
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <div style="text-align: center">
        <form action="/login" method="post" id="loginFrom">
            姓名: <input type="text" name="name" id="name"> <br>
            密码: <input type="password" name="password" id="password"> <br>
            <span id="msg" style="font-size: 12px;color: red"></span> <br>
            <button type="button" id="loginBtn">登录</button>
            <button type="button">注册</button>
        </form>
    </div>
</body>

<!-- 引入JQuery文件 -->
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">

    $("#loginBtn").click(function () {
        var name = $("#name").val();
        var password = $("#password").val();
        if (isEmpty(name)) {
            $("#msg").html("用户姓名不可为空!")
            return;
        }
        if (isEmpty(password)) {
            $("#msg").html("用户密码不可为空!")
            return;
        }
        //提交表单
        $("#loginFrom").submit();
    })

    //判断字符串是否为空
    function isEmpty(str) {
        if (str == null || str.trim() == "") {
            return true;
        }
        return false;
    }
</script>
</html>
image.png Snip20211213_7.png image.png image.png
driver=com.mysql.cj.jdbc.Driver
url= jdbc:mysql://127.0.0.1:3306/java_test?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8
username=root
password=asd123
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="mysql.properties" />
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">

                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>

            </dataSource>
        </environment>
    </environments>

    <mappers>
        <package name="com.sf.mapper"/>
    </mappers>
</configuration>
image.png
package com.sf.bean;

/**
 * 用户实体模型类
 */
public class User {
    private Integer userId;
    private String userName;
    private String userPwd;
    private Integer userAge;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    public Integer getUserAge() {
        return userAge;
    }

    public void setUserAge(Integer userAge) {
        this.userAge = userAge;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", userPwd='" + userPwd + '\'' +
                ", userAge=" + userAge +
                '}';
    }
}
<?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.sf.mapper.UserMapper">

    <select id="queryUserByName" parameterType="String" resultType="com.sf.bean.User">
        select * from t_user where userName = #{userName}
    </select>

</mapper>    
package com.sf.mapper;

import com.sf.bean.User;

/**
 * 用户接口类
 */
public interface UserMapper {
    public User queryUserByName(String userName);
}
package com.sf.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.IOException;
import java.io.InputStream;

public class GetSqlSession {

    public static SqlSession createSqlSession() {

        SqlSessionFactory sqlSessionFactory = null;
        InputStream input = null;
        SqlSession sqlSession = null;

        String resource = "mybatis-config.xml";
        try {
            input = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
            sqlSession = sqlSessionFactory.openSession();
            return sqlSession;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
    //测试
    public static void main(String[] args) {
        System.out.println(createSqlSession());
    }
}
package com.sf.test;

import com.sf.bean.User;
import com.sf.mapper.UserMapper;
import com.sf.utils.GetSqlSession;
import org.apache.ibatis.session.SqlSession;

public class Test {
    public static void main(String[] args) {
        SqlSession session = GetSqlSession.createSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user = userMapper.queryUserByName("lisi");
        System.out.println(user);
    }
}
image.png
package com.sf.controller;

import com.sf.bean.vo.MessageModel;
import com.sf.service.UserService;

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;

@WebServlet("/login")
public class UserServlet extends HttpServlet {
    //实例化UserService对象
    private UserService userService = new UserService();

    /**
     * 用户登录
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收客户端请求参数
        String name = req.getParameter("name");
        String password = req.getParameter("password");
        //2.调用service层的方法,返回消息模型对象
        MessageModel messageModel = userService.userLogin(name,password);
        //3.判断消息模型的状态码
        if (messageModel.getCode() == 1) {
            //将消息模型设置到session作用域中,重定向到首页index.jsp
            req.getSession().setAttribute("user",messageModel.getObject());
            resp.sendRedirect("index.jsp");
        } else {
            //将消息模型设置到request作用域中,请求转发到login.jsp
            req.setAttribute("messageModel",messageModel);
            req.getRequestDispatcher("login.jsp").forward(req,resp);
        }
    }
}
package com.sf.service;

import com.sf.bean.User;
import com.sf.bean.vo.MessageModel;
import com.sf.mapper.UserMapper;
import com.sf.utils.GetSqlSession;
import com.sf.utils.StringUtil;
import org.apache.ibatis.session.SqlSession;

/**
 * 业务逻辑
 */
public class UserService {
    public MessageModel userLogin(String name,String password) {
        //消息模型对象
        MessageModel messageModel = new MessageModel();
        //回显数据
        User user = new User();
        user.setUserName(name);
        user.setUserPwd(password);
        messageModel.setObject(user);

        //1.参数的非空判断
        if (StringUtil.isEmpty(name) || StringUtil.isEmpty(password)) {
            //状态码,提示信息,回显数据 设置到消息模型对象中
            messageModel.setCode(0);
            messageModel.setMsg("用户名和密码不能为空!!!");
            return messageModel;
        }

        //2.调用Dao层的查询方法,通过用户名查询用户对象
        SqlSession session = GetSqlSession.createSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user_dao= userMapper.queryUserByName(name);

        //3.判断用户对象是否为空
        if (user_dao == null) {
            messageModel.setCode(0);
            messageModel.setMsg("用户不存在!!!");
            return messageModel;
        }

        //4.判断数据库中查询到的用户密码与前台传递过来的密码是否相等
        if (!password.equals(user_dao.getUserPwd())) {
            messageModel.setCode(0);
            messageModel.setMsg("用户密码不正确");
            return messageModel;
        }

        //5.登录成功,将用户信息设置到消息模型中
        messageModel.setObject(user_dao);

        return messageModel;
    }
}
package com.sf.mapper;

import com.sf.bean.User;

/**
 * 用户接口类
 */
public interface UserMapper {
    //通过用户姓名 查询数据库
    public User queryUserByName(String userName);
}
<?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.sf.mapper.UserMapper">

    <select id="queryUserByName" parameterType="String" resultType="com.sf.bean.User">
        select * from t_user where userName = #{userName}
    </select>

</mapper>  
<%--
  Created by IntelliJ IDEA.
  User: liyanyan33
  Date: 2021/12/13
  Time: 上午9:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <div style="text-align: center">
        <form action="login" method="post" id="loginFrom">
            姓名: <input type="text" name="name" id="name" value="${messageModel.object.userName}"> <br>
            密码: <input type="password" name="password" id="password" value="${messageModel.object.userPwd}"> <br>
            <span id="msg" style="font-size: 12px;color: red">${messageModel.msg}</span> <br>
            <button type="button" id="loginBtn">登录</button>
            <button type="button">注册</button>
        </form>
    </div>
</body>

<!-- 引入JQuery文件 -->
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">

    $("#loginBtn").click(function () {
        var name = $("#name").val();
        var password = $("#password").val();
        if (isEmpty(name)) {
            $("#msg").html("用户姓名不可为空!")
            return;
        }
        if (isEmpty(password)) {
            $("#msg").html("用户密码不可为空!")
            return;
        }
        //提交表单
        $("#loginFrom").submit();
    })

    //判断字符串是否为空
    function isEmpty(str) {
        if (str == null || str.trim() == "") {
            return true;
        }
        return false;
    }
</script>
</html>
上一篇 下一篇

猜你喜欢

热点阅读