JavaWeb简单案例——用户登录校验JDBC版

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。JavaWeb简单案例——用户登录校验JDBC版,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

简单介绍:

这个和我们之前做的用户登录校验是一样的,只不过是数据源从之前的数据库模拟类变成了真正的数据库而已

运行效果:

JavaWeb简单案例——用户登录校验JDBC版

代码示例:

登陆界面:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/11/23
  Time: 22:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆界面</title>
</head>
<body>
<form action="<c:url value="/JDBCUse"/>">
    <table>
        <tr>
            <td>用户名:</td>
            <td>
                <input type="text" name="username">
            </td>
        </tr>
        <tr>
            <td>密码:</td> <td><input type="password" name="password"></td>
        </tr>
        <tr><td colspan="2"><button type="submit">提交</button></td></tr>
    </table>
</form>
</body>
</html>

显示界面:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/11/23
  Time: 23:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>展示界面</title>
    <style>
        .false{
            color: red;
        }
        .true{
            color: #4cae4c;
        }
    </style>
</head>
<body>
<c:choose>
    <c:when test="${sessionScope.userNameTrue}">
        <h1 class="true">欢迎你:${sessionScope.username}</h1>
        <c:remove var="username" scope="session"/>
        <c:remove var="userNameTrue" scope="session"/>
    </c:when>
    <c:when test="${sessionScope.passwdWorn}">
        <h1 class="false">有这个人但是密码不对</h1>
        <c:remove var="passwdWorn" scope="session"/>
    </c:when>
    <c:otherwise>
        <h1 class="false">就没有这个人!</h1>
    </c:otherwise>
</c:choose>
<a href="http://localhost:80/JDBCLogin/Login.jsp">返回首页</a>
</body>
</html>

数据库连接类:

package Semester_3.JDBCLogin;

import java.sql.Connection;
import java.sql.DriverManager;

public class JDBC {
    public static Connection conn() throws Exception{
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql:///jdbc_demo?serverTimezone=Asia/Shanghai";
        String username = "root";
        String passwd = "123456";
        return DriverManager.getConnection(url, username, passwd);
    }
}

逻辑判断类:

package Semester_3.JDBCLogin;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

@WebServlet(name = "JDBCUse" , value = "/JDBCUse")
public class JDBCUse extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        String username = req.getParameter("username");
        String passwd = req.getParameter("password");
        HttpSession session = req.getSession();
        try {
            String SQL = "select * from user";
            Statement stat = JDBC.conn().createStatement();
            ResultSet set = stat.executeQuery(SQL);
            while (set.next()){
                if(set.getString("username").equals(username)){
                    if(set.getString("password").equals(passwd)){
                        System.out.println("有且对");
                        session.setAttribute("userNameTrue","true");
                        session.setAttribute("username",username);
                        resp.sendRedirect("http://localhost/JDBCLogin/show.jsp");
                        return;
                    }else {
                        System.out.println("有这个人但是密码不对");
                        session.setAttribute("passwdWorn","true");
                        resp.sendRedirect("http://localhost/JDBCLogin/show.jsp");
                        return;
                    }
                }
            }
            resp.sendRedirect("http://localhost/JDBCLogin/show.jsp");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        this.doGet(req, resp);
    }

    public static void main(String[] args) throws Exception {
        Statement statement = JDBC.conn().createStatement();
        String SQL = "select * from user";
        ResultSet set = statement.executeQuery(SQL);
        while (set.next()){
            String username = set.getString("username");
            System.out.println(username);
            System.out.println(username.equals("张三"));
        }
    }
}

思路解析:

界面的显示和数据库的连接都非常简单,我们只说判断的过程。

上面的判断的代码逻辑不是很好,我的基本思路是判断数据库中的username这一列有没有和传进来的用户名相同的,如果有就进入第二层判断,判断密码对不对,如果都对就在session域中设置一个参数,如果中间有发生错误的地方就在对应的session域中传入一个标记,然后重定向到显示的界面。但是在判断没有用户的时候发生了问题,至少我是不知道怎么创建一个判断用户不存在的时候的分支,如果使用else,就会把前几个的判断都走完,会传入很多没有用的数据。

还有一种方法就是将结果存入一个String数组,在数组中进行判断就会容易很多,但是当数据库的数据量非常大的时候,这个做法就不是很明智了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153330.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!