寒假生活指导 04

news/2025/2/4 18:24:15/文章来源:https://www.cnblogs.com/lzq233/p/18698371

javaweb写一个简单的登录系统:

一、环境准备

  1. 开发工具IDEA + Tomcat + MySQL
  2. 依赖库:Servlet API、JDBC驱动、JSTL标签库
  3. 数据库工具:Navicat

二、项目结构
LoginSystem
├── src
│ └── com
│ └── example
│ ├── servlet
│ │ └── LoginServlet.java
│ └── dao
│ └── UserDao.java
├── WebContent
│ ├── WEB-INF
│ │ ├── web.xml
│ │ └── lib
│ │ └── mysql-connector-java-8.0.23.jar
│ ├── login.jsp
│ ├── welcome.jsp
│ └── error.jsp

三、数据库准备

  1. 创建数据库和表
    sql
    CREATE DATABASE login_system;
    USE login_system;

CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL
);

INSERT INTO users(username, password) VALUES ('admin', MD5('123456'));

四、前端实现

  1. login.jsp登录页面)
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录

用户登录

用户名:
密码:
${errorMsg}```
  1. welcome.jsp(登录成功页面)
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
欢迎

欢迎您,${sessionScope.username}!

退出登录五、后端实现 1. UserDao.java(数据库操作) package com.example.dao;

import java.sql.*;

public class UserDao {
private static final String URL = "jdbc:mysql://localhost:3306/login_system";
private static final String USER = "root";
private static final String PASSWORD = "your_password";

public boolean validate(String username, String password) {String sql = "SELECT * FROM users WHERE username=? AND password=MD5(?)";try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);PreparedStatement stmt = conn.prepareStatement(sql)) {stmt.setString(1, username);stmt.setString(2, password);ResultSet rs = stmt.executeQuery();return rs.next();} catch (SQLException e) {e.printStackTrace();return false;}
}

}

  1. LoginServlet.java
    package com.example.servlet;

import com.example.dao.UserDao;
import javax.servlet.;
import javax.servlet.http.
;
import java.io.IOException;

public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    String username = request.getParameter("username");String password = request.getParameter("password");UserDao userDao = new UserDao();if (userDao.validate(username, password)) {HttpSession session = request.getSession();session.setAttribute("username", username);response.sendRedirect("welcome.jsp");} else {request.setAttribute("errorMsg", "用户名或密码错误");request.getRequestDispatcher("login.jsp").forward(request, response);}
}

}

六、配置文件(web.xml)

<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><session-config><session-timeout>30</session-timeout>
</session-config>

七、部署运行

  1. 将项目导出为WAR文件,部署到Tomcat的webapps目录
  2. 启动Tomcat服务器
  3. 访问 http://localhost:8080/LoginSystem/login.jsp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878648.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCIe扫盲——TLP Header详解(三)

Completions Completions的TLP Header的格式如下图所示:这里来解释一下Completion Status Codes000b (SC) Successful Completion:表示请求(Request)被正确的处理; 001b (UR) Unsupported Request:表示请求是非法的或者不能被Completer所识别的。在PCIe V1.1以及之后的版…

03-requests库和session

接口测试经常会用到抓包工具,用来抓取接口测试中发送的HTTP请求信息和接收的响应信息。然后查看里面的具体内容。 fiddler是一款常用的HTTP抓包工具,抓包原理是代理式抓包。 Filters设置过滤项Inspectors查看请求消息和响应消息,点击Raw查看原始的请求消息和响应消息 首先客…

探索Java动态代理的奥秘:JDK vs CGLIB

动态代理是一种在 运行时动态生成代理类的技术,无需手动编写代理类代码。它通过拦截目标方法的调用,实现对核心逻辑的 无侵入式增强(如日志、事务、权限控制等)。一、关于动态代理 1.1 简介 动态代理是一种在 运行时动态生成代理类 的技术,无需手动编写代理类代码。它通过…

Esp32s3(立创实战派)移植LVGL

Esp32s3(立创实战派)移植LVGL 移植: 使用软件EEZ studio 创建工程选择带EEZ Flow的,可以使用该软件更便捷的功能根据屏幕像素调整画布为320*240复制ui文件至工程 将生成的ui文件夹复制到main文件夹同级目录(ui文件夹在工程文件src中) 工程结构:修改声明头文件路径 首先将u…

字节系AI代码编辑器Trae:免费双模大模型+「Builder模式」

字节跳动技术团队近日正式推出AI代码编辑器Trae(官网:https://www.trae.ai/),这款定位为「自适应AI IDE」的开发工具,凭借其创新功能组合在技术圈引发关注。作为面向下一代开发者的智能编程平台,Trae正在重新定义人机协作的编码体验。 一、核心亮点解析双模大模型免费开放…

RocketMQ实战—3.基于RocketMQ升级订单系统架构

大纲 1.基于MQ实现订单系统核心流程的异步化改造 2.基于MQ实现订单系统和第三方系统的解耦 3.基于MQ实现将订单数据同步给大数据团队 4.秒杀系统的技术难点以及秒杀商详页的架构设计 5.基于MQ实现秒杀系统的异步化架构 6.全面引入MQ的订单系统架构的思维导图1.基于MQ实现订单系…

昆明理工大学2025通信复试真题及答案-通信核心课程综合

0854通信工程信号与系统 吴大正信号与线性系统分析昆工昆明理工大学通信工程817信号与系统考研信号与信息处理通信与信息系统通信工程F002通信核心课程综合通信工程(含宽带网络、移动通信等)

pytorch | softmax(x,dim=-1)参数dim的理解

转自:https://zhuanlan.zhihu.com/p/525276061 首先说一下Softmax函数,公式如下:1. 三维tensor(C,H,W) 一般会设置成dim=0,1,2,-1的情况(可理解为维度索引)。其中2与-1等价,相同效果。 用一张图片来更好理解这个参数dim数值变化:当dim=0时, 是对每一维度相同位置的数值进行…

私人订制新功能——日常

最近开发了一个新功能,以前我都是用纸质笔记做记录的日常生活,后来发现有点麻烦,比如写英语日记的时候,哪天的日记忘记写了还得往前翻太麻烦了,现在打算制作一个功能把这个事情记录下来;功能:是否已经写英语日记记录、举哑铃记录、锻炼握力器记录;

2025 PVC

短线有波上涨

静态代理模式:代码世界的“替身演员”

静态代理是代理模式的一种**实现方式**,其特点是**代理类在编译时就已经确定**,代理类的代码是在程序编译阶段生成的,而不是运行时动态生成。一、关于静态代理 1.1 简介 静态代理是代理模式的一种实现方式,其特点是代理类在编译时就已经确定,代理类的代码是在程序编译阶段…

一个 .NET 开源、免费、功能强大的Windows应用卸载神器

前言 今天大姚给大家分享一个基于 .NET 开源(Apache License)、免费、功能强大的Windows应用卸载神器:Bulk Crap Uninstaller。 项目介绍 Bulk Crap Uninstaller 是一款基于 .NET 开源(Apache License)、免费、功能强大的Windows应用卸载工具,旨在帮助用户快速且有效地移…