0


Java Web实验十:网站用户登录

实验十 网站用户登录

****一、实验目的 ****

  1. 熟练JDBC的基本概念和原理;

  2. 掌握使用JDBC进行数据库连接和操作的方法;

  3. 实践使用JDBC进行数据库操作。

二、实验内容

大型网站只有在用户登录成功后才能进行相关操作,本次实验要求实现一个如下图所示用户登录功能。

  1. 首先创建一个数据库表user,包含字段id(主键),username,password,name,gender,phonenumber,identitycode,其中id为学号;
  2. 在用户登录时,在数据库中判断是否存在该用户的username,如果不存在,显示“用户名不存在”,如果存在,则判断password是否正确,如果不正确,显示“密码错误,请重新输入”,否则,跳转到登录成功页面。

三、实验源代码、运行截图

源代码

LoginServlet.java:

package xxx;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.*;

public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
       
        String url = "jdbc:mysql://localhost:3306/javatest10";
        String user = "root";
        String passwordDb = "123456";

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {

            Class.forName("com.mysql.cj.jdbc.Driver");

            conn = DriverManager.getConnection(url, user, passwordDb);

            String sql = "SELECT * FROM user WHERE username = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, username);
            rs = pstmt.executeQuery();

            if (rs.next()) {
                // 用户名存在
                String dbPassword = rs.getString("password");
                if (dbPassword.equals(password)) {
                    // 密码正确,登录成功
                    response.sendRedirect("success.jsp"); // 跳转到成功页面
                } else {
                    
                    // 密码错误
                    request.setAttribute("error", "密码错误,请重新输入");
                    
                    request.getRequestDispatcher("login.jsp").forward(request, response);
                }
            } else {
                // 用户名不存在
                request.setAttribute("error", "用户名不存在");
                request.getRequestDispatcher("login.jsp").forward(request, response);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) rs.close();
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 50vh;
            margin: 0;
            background-color: #f0f0f0; 
        }

        .container {
            text-align: center;
        }

        .form-group {
            margin-bottom: 15px; /* 调整输入框之间的间距 */
        }

        .btn-login {
            display: inline-block;
            padding: 10px 20px;
            font-size: 16px;
            color: white;
            background-color: green; /* 设置按钮背景为绿色 */
            border: none;
            border-radius: 4px; /* 设置按钮边框圆角 */
            cursor: pointer;
        }
    </style>
</head>
<body>
<div class="container">

    <form method="post" action="loginServlet">
        <div class="form-group">
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div class="form-group">
            <label for="password">&nbsp;Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div class="form-group">
            <input type="submit" value="登录" class="btn-login">
        </div>
    </form>

    <%-- 显示错误信息 --%>
    <c:if test="${not empty error}">
        <p style="color: red;" class="error">${error}</p>
    </c:if>
</div>

</body>
</html>

success.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登录成功</title>
</head>
<body>
<h1>登录成功!</h1>

</body>
</html>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
    <servlet-name>LoginServlet</servlet-name>
        <servlet-class>xxx.LoginServlet</servlet-class> 
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/loginServlet</url-pattern> <!-- 与login.jsp中的form action对应 -->
    </servlet-mapping>

</web-app>

运行截图

登录成功

用户名不存在

密码错误


本文转载自: https://blog.csdn.net/jianguosongzi/article/details/137776662
版权归原作者 爱编程的松子 所有, 如有侵权,请联系我们删除。

“Java Web实验十:网站用户登录”的评论:

还没有评论