利用tomcat实现简单登录界面

一、登录认证代码总览

序号文件名称类型描述
1login.jspJSP用户登录访问页面,在该页面中提供了登陆表格(配套表单验证),在登录失败后需要跳回到此页面并显示错误信息
2check.jspJSP登录认证页面,实现表单参数接受,利用DatabaseCoonection工具类实现了MySQL数据库的连接,利用SQL查询语句实现用户信息检查
3welcome.jspJSP登录成功页面,当check.jsp页面验证通过后会跳转到此页面新型显示
4DatabaseConnection.javaJava数据库连接工具类,check.jsp页面通过次类获取数据库连接

二、数据库创建

DROP DATABASE IF EXISTS users;
CREATE DATABASE users CHARACTER SET UTF8;
USE users;
CREATE TABLE member (
    mid                 VARCHAR(50),
    name                VARCHAR(50),
    password            VARCHAR(50),
    CONSTRAINT pk_mid   PRIMARY KEY(mid)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO member(mid,name,password) VALUES('admin','zqh','123');
INSERT INTO member(mid,name,password) VALUES('user','zsj','1234');
COMMIT;

三、用户登录表单

本表单基于Bootstrap框架开发

<%--
  Created by IntelliJ IDEA.
  User: 49816
  Date: 2023/7/4
  Time: 11:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%! // 为便于路径管理,将表单提交路径定义为全局变量
  public static final String LOGIN_URL = "check.jsp";
%>
<form action="<%=LOGIN_URL%>" class="form-horizontal" id="memberform" method="post">
  <fieldset>
    <legend><img src="images/user-title.png" style="width: 50px;">用户登录</legend>
  </fieldset>
  <div class="form-group" id="midDiv">
    <label class="col-mid-2 control-label">用户名:</label>
    <div class="col-md-7">
      <input type="text" id="mid" name="mid" class="form-control" placeholder="请输入用户的注册ID编号。">
    </div>
    <div class="col-md-3">
      <span id="midSpan"></span>
    </div>
  </div>
  <div class="form-group" id="passwordDiv">
    <label class="col-md-7">
      <input type="password" id="password" name="password" class="form-control" placeholder="请输入登陆密码">
    </label>
    <div class="col-md-3">
      <span id="passwordSpan"></span>
    </div>
  </div>
  <div class="form-group" id="controlDiv">
    <div class="col-md-push-3 col-md-3">
      <button type="submit" class="btn btn-primary btn-sm">登录</button>
      <button type="reset" class="btn btn-warning btn-sm">重置</button>
    </div>
  </div>
</form>

四、用户登录检测

<%--
  Created by IntelliJ IDEA.
  User: 49816
  Date: 2023/7/4
  Time: 11:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="classes.DatabaseConnection" %>
<%@ page import="java.sql.*" %>
<% // 不考虑服务器数据的验证问题
    String mid = request.getParameter("mid");                           // 接受mid参数
    String password = request.getParameter("password");                 // 接受password参数
    String sql = "SELECT name FROM member WHERE mid=? AND password=? ";
    PreparedStatement pstmt =
            DatabaseConnection.getConnection().prepareStatement(sql);   // 获取Statement实例
    pstmt.setString(1,mid);                                             // 设置占位符内容
    pstmt.setString(2,password);                                        // 设置占位符内容
    ResultSet rs = pstmt.executeQuery();                                // 数据查询
    String name = null;
    if (rs.next()){
        name = rs.getString(1);                                         // 获取数据库查询列
    }
    <% if(name == null) { %>                                            // 有错误就跳转没有就输出
    <jsp:forward page="login.jsp">
        <jsp:param name="error" value="emsg"/>
    </jsp:forward>
    <% } else { %>
    <jsp:forward page="welcome.jsp">
        <jsp:param name="name" value="<%=name%>"/>
    </jsp:forward>
    <% } %>
DatabaseConnection.close();                                         // 关闭数据库连接
%>

五、登录信息显示

<%--
  Created by IntelliJ IDEA.
  User: 49816
  Date: 2023/7/4
  Time: 11:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String name= request.getParameter("name");// 接受跳转函数%>
<div class="row">
    <div class="col-mid-12">
        <img src="images/zm.png" style="width: 100px;">
        <span class="text-success h2">用户登录成功欢迎<%=name%>的访问!</span>
    </div>
</div>
​

六、数据库连接

package classes;
​
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
​
public class DatabaseConnection {
    public static final String DBDRIVER =
            "com.mysql.cj.jdbc.Driver";             // 驱动
    public static final String DBURL =
            "jdbc:mysql://localhost:3306";          // 连接地址
    public static final String USER = "root";       // 用户名
    public static final String PASSWORD = "111111"; // 密码
    public static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<>();
    private DatabaseConnection(){}                  // 构造方法私有化禁止外部实例化
    private static Connection rebuildConnection(){  // 声明连接接口对象
        Connection conn = null;
        try{
            Class.forName(DBDRIVER); // 加载驱动
            conn = DriverManager.getConnection(
                    DBURL,USER,PASSWORD);           // 连接数据库
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return conn;
    }
    public static Connection getConnection(){       // 获取数据库连接
        Connection conn = THREAD_LOCAL.get();       // 获取当前线程连接
        if(conn == null) {                          // 当前没有连接保存
            conn = rebuildConnection();             // 创建新连接
            THREAD_LOCAL.set(conn);                 // 保存数据库连接
        }
        return conn;                                // 返回数据库连接
    }
    public static void close(){                     // 关闭数据库连接
        Connection conn = THREAD_LOCAL.get();       // 获取当前线程连接
        if(conn != null){
            try {
                conn.close();                       // 关闭连接
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
            THREAD_LOCAL.remove();                  // 删除对象
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值