使用IntelliJ IDEA创建简单的Java Web项目完整步骤

2025-01-16 16:50

本文主要是介绍使用IntelliJ IDEA创建简单的Java Web项目完整步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se...

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

前置准备

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

项目功能实现步骤

1. 创建项目

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

2. 配置 Tomcat

  • 点击顶部菜单的 Run -> Edit Configurations
  • 点击左上角的 +,选择 Tomcat Server -> Local
  • 配置 Tomcat:
    • 填写 Name,如 Tomcat-SimpleLoginApp
    • 在 Application Server 中选择 Tomcat(点击 Configure 指向本地的 Tomcat 安装目录)。
    • 在 Deployment 选项卡中,点击 +,选择 Add Artifact,并添加项目的 WAR 包。
  • 点击 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 {
    @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);
   www.chinasem.cn         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 {
    @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

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 页面

  • 登录页面 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>
  • 注册页面 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>
  • 用户列表页面 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>LogiChina编程nServlet</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>

启动项目

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

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

总结

到此这篇关于使用IntelliJ IDEA创建简单的Java Web项目的文章就介绍到这了,更多相关IDEA创建Java Web项目内容请搜索China编程(www.chinasem.cn)以China编程前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于使用IntelliJ IDEA创建简单的Java Web项目完整步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153085

相关文章

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp