使用 IntelliJ IDEA 创建简单的 Java Web 项目

以下是使用 IntelliJ IDEA 创建几个简单的 Java Web 项目的步骤,每个项目实现基本的登录、注册和查看列表功能,依赖 Servlet/JSP 和基本的 Java Web 开发。


前置准备

  1. 确保安装了 IntelliJ IDEA Ultimate(社区版不支持 Web 应用)。
  2. 确保安装了 JDK 8 或以上版本
  3. 下载并配置 Tomcat 服务器(确保 IDEA 中已配置 Tomcat)。
  4. 创建 MySQL 数据库,并准备对应表结构。

项目功能实现步骤

1. 创建项目
  1. 打开 IntelliJ IDEA,点击 File -> New -> Project
  2. 在左侧选择 Java Enterprise,在右侧配置:
    • 勾选 Web Application
    • 勾选 Java(选择对应的 JDK)。
    • 点击 Next
  3. 输入项目名称(如 SimpleLoginApp),选择项目位置。
  4. 勾选 Create Web.xml 生成标准的 Web 项目结构。
  5. 点击 Finish

2. 配置 Tomcat
  1. 点击顶部菜单的 Run -> Edit Configurations
  2. 点击左上角的 +,选择 Tomcat Server -> Local
  3. 配置 Tomcat:
    • 填写 Name,如 Tomcat-SimpleLoginApp
    • Application Server 中选择 Tomcat(点击 Configure 指向本地的 Tomcat 安装目录)。
    • Deployment 选项卡中,点击 +,选择 Add Artifact,并添加项目的 WAR 包。
  4. 点击 Apply -> OK

3. 项目文件结构

创建后的项目基本结构如下:

SimpleLoginApp/
├── src/main/java/
│   └── com.example.controller/
│       ├── LoginServlet.java
│       ├── RegisterServlet.java
│       ├── UserListServlet.java
│       └── DatabaseConnection.java
├── src/main/resources/
├── src/main/webapp/
│   ├── WEB-INF/
│   │   ├── web.xml
│   ├── index.jsp
│   ├── login.jsp
│   ├── register.jsp
│   └── userlist.jsp

4. 创建数据库和表

使用 MySQL 创建一个简单的 user 表,用于存储用户名、密码等信息。

CREATE DATABASE simple_login_app;USE simple_login_app;CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100),gender ENUM('male', 'female', 'other'),birthday DATE
);

5. 实现功能
1. 数据库连接工具类

com.example.controller 包中创建 DatabaseConnection.java

package com.example.controller;import java.sql.Connection;
import java.sql.DriverManager;public class DatabaseConnection {private static final String URL = "jdbc:mysql://localhost:3306/simple_login_app";private static final String USER = "root";private static final String PASSWORD = "your_password";public static Connection getConnection() throws Exception {Class.forName("com.mysql.cj.jdbc.Driver");return DriverManager.getConnection(URL, USER, PASSWORD);}
}

2. 登录功能

com.example.controller 包中创建 LoginServlet.java

package com.example.controller;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");try (Connection conn = DatabaseConnection.getConnection()) {String query = "SELECT * FROM user WHERE username = ? AND password = ?";PreparedStatement stmt = conn.prepareStatement(query);stmt.setString(1, username);stmt.setString(2, password);ResultSet rs = stmt.executeQuery();if (rs.next()) {request.getSession().setAttribute("username", username);response.sendRedirect("userlist.jsp");} else {response.getWriter().println("<h3>Invalid username or password</h3>");}} catch (Exception e) {e.printStackTrace();}}
}

3. 注册功能

com.example.controller 包中创建 RegisterServlet.java

package com.example.controller;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;public class RegisterServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");String email = request.getParameter("email");String gender = request.getParameter("gender");String birthday = request.getParameter("birthday");try (Connection conn = DatabaseConnection.getConnection()) {String query = "INSERT INTO user (username, password, email, gender, birthday) VALUES (?, ?, ?, ?, ?)";PreparedStatement stmt = conn.prepareStatement(query);stmt.setString(1, username);stmt.setString(2, password);stmt.setString(3, email);stmt.setString(4, gender);stmt.setString(5, birthday);stmt.executeUpdate();response.sendRedirect("login.jsp");} catch (Exception e) {e.printStackTrace();}}
}

4. 查看用户列表功能

com.example.controller 包中创建 UserListServlet.java

package com.example.controller;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;public class UserListServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try (Connection conn = DatabaseConnection.getConnection()) {String query = "SELECT * FROM user";PreparedStatement stmt = conn.prepareStatement(query);ResultSet rs = stmt.executeQuery();request.setAttribute("users", rs);RequestDispatcher dispatcher = request.getRequestDispatcher("userlist.jsp");dispatcher.forward(request, response);} catch (Exception e) {e.printStackTrace();}}
}

5. JSP 页面
  1. 登录页面 login.jsp:
<form action="LoginServlet" method="post">用户名: <input type="text" name="username" required><br>密码: <input type="password" name="password" required><br><button type="submit">登录</button>
</form>
  1. 注册页面 register.jsp:
<form action="RegisterServlet" method="post">用户名: <input type="text" name="username" required><br>密码: <input type="password" name="password" required><br>邮箱: <input type="email" name="email"><br>性别: <select name="gender"><option value="male"></option><option value="female"></option><option value="other">其他</option></select><br>生日: <input type="date" name="birthday"><br><button type="submit">注册</button>
</form>
  1. 用户列表页面 userlist.jsp:
<%@ page import="java.sql.ResultSet" %>
<%ResultSet rs = (ResultSet) request.getAttribute("users");
%>
<table border="1"><tr><th>用户名</th><th>邮箱</th><th>性别</th><th>生日</th></tr><%while (rs.next()) {%><tr><td><%= rs.getString("username") %></td><td><%= rs.getString("email") %></td><td><%= rs.getString("gender") %></td><td><%= rs.getDate("birthday") %></td></tr><%}%>
</table>

6. 配置 web.xml
<web-app><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.example.controller.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping><servlet><servlet-name>RegisterServlet</servlet-name><servlet-class>com.example.controller.RegisterServlet</servlet-class></servlet><servlet-mapping><servlet-name>RegisterServlet</servlet-name><url-pattern>/RegisterServlet</url-pattern></servlet-mapping><servlet><servlet-name>UserListServlet</servlet-name><servlet-class>com.example.controller.UserListServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserListServlet</servlet-name><url-pattern>/UserListServlet</url-pattern></servlet-mapping>
</web-app>

启动项目

  1. 运行 Tomcat 服务器。
  2. 打开浏览器访问登录页面:http://localhost:8080/SimpleLoginApp/login.jsp
  3. 测试注册、登录和查看用户列表功能。

这样就可以实现一个基础的 Java Web 应用。如果有更多需求,可以继续扩展!

ps:

我承接各类软件开发项目,技术栈涵盖Python、Java(Swing、JSP)、H5、原生安卓、iOS、Web(PHP、Vue、Node)、C#、Java、C++等,能够为客户提供高效、专业的定制化软件解决方案,满足不同平台和需求的开发要求,如有需要请联系我。在这里插入图片描述

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

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

相关文章

抓包工具之mitmproxy

一、mitmproxy简介 mitmproxy介绍 mitmproxy又名中间人攻击代理&#xff0c;是一个抓包工具&#xff0c;类似于WireShark、Filddler&#xff0c;并且它支持抓取HTTP和HTTPS协议的数据包&#xff0c;只不过它是一个控制台的形式操作。另外&#xff0c;它还有两个非常有用的组件…

Flutter项目开发模版,开箱即用(Plus版本)

前言 当前案例 Flutter SDK版本&#xff1a;3.22.2 本文&#xff0c;是由这两篇文章 结合产出&#xff0c;所以非常建议大家&#xff0c;先看完这两篇&#xff1a; Flutter项目开发模版&#xff1a; 主要内容&#xff1a;MVVM设计模式及内存泄漏处理&#xff0c;涉及Model、…

rk3568 , buildroot , qt ,使用sqlite, 动态库, 静态库

问题说明&#xff1a; 客户反馈 &#xff0c;buildroot 系统 &#xff0c;使用qt 使用sqlite &#xff0c;有报错&#xff0c;无法使用sqlite. 测试情况说明&#xff1a; 我自己测试&#xff0c;发现&#xff0c; buildroot 自己默认就是 使能了 sqlite 的。 是否解决说明&…

投机解码论文阅读:Falcon

题目&#xff1a;Falcon: Faster and Parallel Inference of Large Language Models through Enhanced Semi-Autoregressive Drafting and Custom-Designed Decoding Tree 地址&#xff1a;https://arxiv.org/pdf/2412.12639 一看它的架构图&#xff0c;可以发现它是基于EAGLE…

鸿蒙UI(ArkUI-方舟UI框架)

参考&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-layout-development-overview-V13 ArkUI简介 ArkUI&#xff08;方舟UI框架&#xff09;为应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能&#xff…

TensorFlow Quantum快速编程(基本篇)

一、TensorFlow Quantum 概述 1.1 简介 TensorFlow Quantum(TFQ)是由 Google 开发的一款具有开创性意义的开源库,它宛如一座桥梁,巧妙地将量子计算与 TensorFlow 强大的机器学习功能紧密融合。在当今科技飞速发展的时代,传统机器学习虽已取得诸多瞩目成就,然而面对日益…

Qt天气预报系统获取天气数据

Qt天气预报系统获取天气数据 1、获取天气数据1.1添加天气类头文件1.2定义今天和未来几天天气数据类1.3定义一个解析JSON数据的函数1.4在mainwindow中添加weatherData.h1.5创建今天天气数据和未来几天天气数据对象1.6添加parseJson定义1.7把解析JSON数据添加进去1.8添加错误1.9解…

国产编辑器EverEdit - 扩展脚本:关闭所有未修改文档

1 扩展脚本&#xff1a;关闭所有未修改文档 1.1 应用场景 当用户打开过多文档时&#xff0c;部分文档已经修改&#xff0c;而大部分没有修改&#xff0c;为了减少在众多已打开文档中来回跳转的不便&#xff0c;可以将没有修改的文档全部关闭&#xff0c;但目前提供的快速关闭窗…

高斯函数Gaussian绘制matlab

高斯 约翰卡尔弗里德里希高斯&#xff0c;&#xff08;德语&#xff1a;Johann Carl Friedrich Gau&#xff0c;英语&#xff1a;Gauss&#xff0c;拉丁语&#xff1a;Carolus Fridericus Gauss&#xff09;1777年4月30日–1855年2月23日&#xff0c;德国著名数学家、物理学家…

dolphinscheduler2.0.9升级3.1.9版本问题记录

相关版本说明 JDK&#xff1a;JDK (1.8&#xff09; DolphinScheduler &#xff1a;3.1.9 数据库&#xff1a;MySQL (8)&#xff0c;驱动&#xff1a;MySQL JDBC Driver 8.0.16 注册中心&#xff1a;ZooKeeper (3.8.4) 问题一&#xff1a;dolphinscheduler2.0.9对应zk版本使用…

Sqoop1.4.7安装

环境说明 准备三台服务器&#xff0c;分别为&#xff1a;bigdata141&#xff08;hadoop 主节点&#xff09;、bigdata142、bigdata143确保 hadoop 集群先启动好&#xff0c;hadoop 版本为 3.2.0如果只安装不使用的话&#xff0c;以上可以暂时不用管另准备一台服务器&#xff0…

每日学习30分轻松掌握CursorAI:初识Cursor AI

初识Cursor AI 一、什么是Cursor AI&#xff1f; Cursor AI是一款革命性的AI驱动型代码编辑器&#xff0c;它将传统的代码编辑功能与先进的人工智能技术相结合。它不仅是一个编辑器&#xff0c;更是一个智能编程助手&#xff0c;能够帮助开发者提高编码效率&#xff0c;解决编…

小米路由器IPv6 功能使用指南

本文不限于多层路由使用IPv6 的情况&#xff0c;提供解决IPv6 无法获取的更硬核的方法&#xff0c;需要有ssh 工具。&#xff08;无安卓设备&#xff0c;测试环境win、mac、ios&#xff09; 首先明确一点&#xff0c;就是如果想让你的设备得到GUA 地址&#xff0c;即访问 6.i…

云商城--业务+架构学习和环境准备

云商城业务架构学习和环境准备 B2B&#xff1a;Business to Business&#xff0c;交易双方的身份都是商家&#xff0c;也就是商家将商品卖给商家&#xff0c;类似采购、批发类购物&#xff0c;国内代表性网站阿里巴巴批发网 C2C&#xff1a;Customer to Customer&#xff0c;…

机器视觉系统中的重要配件--棱镜

在一套机器视觉系统中&#xff0c;人们一直比较注中工业相机、工业镜头及光源等重要的视觉器件&#xff0c;而小配件通常被忽视&#xff0c;虽然只是配角&#xff0c;但是却起着重要作用。以下以茉丽特镜头为例。 在构建视觉系统当中&#xff0c;遇到某个方向空间不足时&#x…

软件系统安全逆向分析-混淆对抗

1. 概述 在一般的软件中&#xff0c;我们逆向分析时候通常都不能直接看到软件的明文源代码&#xff0c;或多或少存在着混淆对抗的操作。下面&#xff0c;我会实践操作一个例子从无从下手到攻破目标。 花指令对抗虚函数表RC4 2. 实战-donntyousee 题目载体为具有漏洞的小型软…

#渗透测试#网络安全# 一文了解什么是跨域CROS!!!

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

ClickHouse vs StarRocks 选型对比

一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了&#xff0c;Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件&#xff0c;发明各种的解决方案技术栈&#xff0c;一方面确实帮助很多用户解决了问题&#xff0c;但另一方面因为繁杂的技术栈与高昂的维护成本&…

Win11家庭版转专业版

Win11家庭版转专业版&#xff08;亲测有效&#xff09; 第一步 【断网】输入这个密钥&#xff1a; R8NJ8-9X7PV-C7RCR-F3J9X-KQBP6 第二步 点击下一步会自动重启 第三步 【联网】输入这个密钥&#xff1a; F3NWX-VFMFC-MHYYF-BCJ3K-QV66Y 注意 两次输入密钥的地方一致 …

IP 地址与蜜罐技术

基于IP的地址的蜜罐技术是一种主动防御策略&#xff0c;它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意&#xff0c;将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描&#xff0c;寻找可入侵的目标时&…