当前位置: 首页 > news >正文

Java Web登录系统实现(不使用开发工具)

我将展示如何手动编写一个基于JSP和Servlet的登录系统,连接MySQL数据库并在Tomcat中运行。

实现思路

  1. 创建数据库和用户表

  2. 编写JSP登录页面

  3. 创建Servlet处理登录逻辑

  4. 配置web.xml

  5. 部署到Tomcat

代码实现

1. 数据库准备

首先创建数据库和用户表:

sql

CREATE DATABASE login_system;
USE login_system;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,email VARCHAR(100)
);INSERT INTO users (username, password, email) VALUES 
('admin', 'admin123', 'admin@example.com'),
('user1', 'password1', 'user1@example.com');

2. 目录结构

text

LoginSystem/
├── WEB-INF/
│   ├── web.xml
│   ├── classes/
│   │   ├── com/
│   │   │   └── example/
│   │   │       ├── dao/
│   │   │       │   └── UserDAO.java
│   │   │       ├── model/
│   │   │       │   └── User.java
│   │   │       └── servlet/
│   │   │           └── LoginServlet.java
├── login.jsp
├── welcome.jsp
├── error.jsp
└── META-INF/└── context.xml

3. 创建JSP页面

login.jsp - 登录页面

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title><style>body {font-family: Arial, sans-serif;background-color: #f5f5f5;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.login-container {background-color: white;padding: 30px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);width: 300px;}h2 {text-align: center;color: #333;}.form-group {margin-bottom: 15px;}label {display: block;margin-bottom: 5px;color: #555;}input[type="text"],input[type="password"] {width: 100%;padding: 8px;border: 1px solid #ddd;border-radius: 4px;box-sizing: border-box;}button {width: 100%;padding: 10px;background-color: #4CAF50;color: white;border: none;border-radius: 4px;cursor: pointer;font-size: 16px;}button:hover {background-color: #45a049;}.error {color: red;text-align: center;margin-top: 10px;}</style>
</head>
<body><div class="login-container"><h2>用户登录</h2><form action="login" method="post"><div class="form-group"><label for="username">用户名:</label><input type="text" id="username" name="username" required></div><div class="form-group"><label for="password">密码:</label><input type="password" id="password" name="password" required></div><button type="submit">登录</button></form><% String error = request.getParameter("error");if (error != null) {%><div class="error">登录失败,请检查用户名和密码</div><% } %></div>
</body>
</html>

welcome.jsp - 登录成功页面

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录成功</title><style>body {font-family: Arial, sans-serif;background-color: #f5f5f5;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.welcome-container {background-color: white;padding: 30px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);text-align: center;}h2 {color: #4CAF50;}a {color: #4CAF50;text-decoration: none;}a:hover {text-decoration: underline;}</style>
</head>
<body><div class="welcome-container"><h2>登录成功!</h2><p>欢迎, <%= session.getAttribute("username") %>!</p><p><a href="login.jsp">返回登录页面</a></p></div>
</body>
</html>

error.jsp - 错误页面

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>错误</title><style>body {font-family: Arial, sans-serif;background-color: #f5f5f5;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.error-container {background-color: white;padding: 30px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);text-align: center;}h2 {color: #f44336;}a {color: #4CAF50;text-decoration: none;}a:hover {text-decoration: underline;}</style>
</head>
<body><div class="error-container"><h2>系统错误</h2><p>抱歉,系统出现错误,请稍后再试。</p><p><a href="login.jsp">返回登录页面</a></p></div>
</body>
</html>

4. 创建Java类

User.java - 用户模型类

java

package com.example.model;public class User {private int id;private String username;private String password;private String email;// 构造函数public User() {}public User(String username, String password) {this.username = username;this.password = password;}// Getter和Setter方法public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

UserDAO.java - 数据库操作类

java

package com.example.dao;import com.example.model.User;
import java.sql.*;public class UserDAO {private String jdbcURL = "jdbc:mysql://localhost:3306/login_system?useSSL=false";private String jdbcUsername = "root";private String jdbcPassword = "your_password"; // 替换为你的数据库密码private static final String SELECT_USER_BY_USERNAME = "SELECT id, username, password, email FROM users WHERE username = ?";protected Connection getConnection() {Connection connection = null;try {Class.forName("com.mysql.cj.jdbc.Driver");connection = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return connection;}public User selectUser(String username) {User user = null;try (Connection connection = getConnection();PreparedStatement preparedStatement = connection.prepareStatement(SELECT_USER_BY_USERNAME)) {preparedStatement.setString(1, username);ResultSet rs = preparedStatement.executeQuery();while (rs.next()) {int id = rs.getInt("id");String password = rs.getString("password");String email = rs.getString("email");user = new User(username, password);user.setId(id);user.setEmail(email);}} catch (SQLException e) {e.printStackTrace();}return user;}public boolean validate(User user) {boolean status = false;try (Connection connection = getConnection();PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?")) {preparedStatement.setString(1, user.getUsername());preparedStatement.setString(2, user.getPassword());ResultSet rs = preparedStatement.executeQuery();status = rs.next();} catch (SQLException e) {e.printStackTrace();}return status;}
}

LoginServlet.java - 登录处理Servlet

java

package com.example.servlet;import com.example.dao.UserDAO;
import com.example.model.User;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;private UserDAO userDAO;public void init() {userDAO = new UserDAO();}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);try {if (userDAO.validate(user)) {HttpSession session = request.getSession();session.setAttribute("username", username);response.sendRedirect("welcome.jsp");} else {response.sendRedirect("login.jsp?error=true");}} catch (Exception e) {e.printStackTrace();response.sendRedirect("error.jsp");}}
}

5. 配置文件

web.xml - 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"><display-name>Login System</display-name><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.example.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list>
</web-app>

context.xml - 数据库连接配置(可选,放在META-INF目录下)

xml

<?xml version="1.0" encoding="UTF-8"?>
<Context><Resource name="jdbc/login_system" auth="Container" type="javax.sql.DataSource"maxTotal="100" maxIdle="30" maxWaitMillis="10000"username="root" password="your_password" driverClassName="com.mysql.cj.jdbc.Driver"url="jdbc:mysql://localhost:3306/login_system?useSSL=false"/>
</Context>

部署步骤

  1. 将MySQL JDBC驱动(mysql-connector-java.jar)复制到Tomcat的lib目录

  2. 将整个LoginSystem文件夹复制到Tomcat的webapps目录

  3. 启动Tomcat服务器

  4. 访问 http://localhost:8080/LoginSystem/

注意事项

  1. 确保数据库用户名和密码正确

  2. 确保MySQL服务正在运行

  3. 如果使用context.xml配置数据源,需要在UserDAO中使用JNDI查找数据源

这个实现提供了一个基本的登录系统,包括用户界面、数据库连接和身份验证功能。您可以根据需要进一步扩展功能,如添加用户注册、密码加密、会话管理等。

http://www.dtcms.com/a/512525.html

相关文章:

  • 安徽省建设安全质量协会网站百度新闻官网
  • 数据结构——最短路径算法
  • SBC在企业中的应用场景
  • ai痕迹记录
  • 中建八局第一建设公司网站网站建设丨找王科杰专业
  • 网站建设的目标是什么制作简单门户网站步骤
  • C++11----新引入的默认成员函数
  • 广州商城型网站建设佛山网站建设有哪些
  • 寻找建设网站客户wordpress 是php
  • 理解 Linux 进程间通信(IPC)
  • JaveWeb后端-Web基础-SpringBoot Web、HTTP协议
  • Spring 自动注入是怎么实现的?从 @Component 到 @Autowired 的完整流程
  • 基于springboot的基于智能推荐的卫生健康系统开发与设计
  • 技术面:Spring(循环依赖,spring与springboot的区别)
  • 网站建设相关法律python破解wordpress
  • 高并发系统网络优化:TCP 参数调优、HTTP 协议优化(HTTP_2、HTTPS)
  • PostgreSQL跨数据库授权查询
  • 构建自定义命令行工具 - 打造专属指令体
  • 今日反弹有玄机:外围利好是助力!
  • 门户网站定制青岛网站建设公司招聘
  • 腾讯云做网站怎么样长沙装修公司口碑比较好的
  • 做翻译 网站php网站建设找哪家好
  • 网站建设中栏目是什么南京做代账会计在哪个网站上找
  • 2025年HR 数字化转型:从工具应用到组织能力重构的深度变革
  • 做网站需要看的书公司网站建设工作内容
  • 4.7.Cypher 中的子查询
  • 公共服务平台网站建设方案下载wordpress建站程序
  • 数据结构八大排序:希尔排序-原理解析+C语言实现+优化+面试题
  • 数据结构八大排序:归并排序-原理+C语言实现+优化+面试题
  • 无站点推广就是不在网上推广广州网站建设 美词