使用 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 表,用于存储用户名、密码等信息。

sql 复制代码
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

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

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 {
    @Override
    protected 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

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 {
    @Override
    protected 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

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 {
    @Override
    protected 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:
html 复制代码
<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:
html 复制代码
<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:
html 复制代码
<%@ 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
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++等,能够为客户提供高效、专业的定制化软件解决方案,满足不同平台和需求的开发要求,如有需要请联系我。

相关推荐
FogLetter几秒前
图片懒加载:让网页飞起来的魔法技巧 ✨
前端·javascript·css
Mxuan几秒前
vscode webview 插件开发(精装篇)
前端
Mxuan2 分钟前
vscode webview 插件开发(交付篇)
前端
Mxuan3 分钟前
vscode 插件与 electron 应用跳转网页进行登录的实践
前端
拾光拾趣录3 分钟前
JavaScript 加载对浏览器渲染的影响
前端·javascript·浏览器
Codebee3 分钟前
OneCode图表配置速查手册
大数据·前端·数据可视化
然我4 分钟前
React 开发通关指南:用 HTML 的思维写 JS🚀🚀
前端·react.js·html
guojl5 分钟前
深度解读jdk8 ConcurrentHashMap设计与源码
java
Mxuan5 分钟前
vscode webview 插件开发(毛坯篇)
前端
FogLetter7 分钟前
前端性能优化:深入理解回流与重绘
前端·css