欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用IntelliJ?IDEA創(chuàng)建簡單的Java?Web項(xiàng)目完整步驟

 更新時(shí)間:2025年01月16日 11:18:03   作者:終將老去的窮苦程序員  
這篇文章主要介紹了如何使用IntelliJ?IDEA創(chuàng)建一個(gè)簡單的JavaWeb項(xiàng)目,實(shí)現(xiàn)登錄、注冊和查看用戶列表功能,使用Servlet和JSP技術(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

以下是使用 IntelliJ IDEA 創(chuàng)建幾個(gè)簡單的 Java Web 項(xiàng)目的步驟,每個(gè)項(xiàng)目實(shí)現(xiàn)基本的登錄、注冊和查看列表功能,依賴 Servlet/JSP 和基本的 Java Web 開發(fā)。

前置準(zhǔn)備

  • 確保安裝了 IntelliJ IDEA Ultimate(社區(qū)版不支持 Web 應(yīng)用)。
  • 確保安裝了 JDK 8 或以上版本。
  • 下載并配置 Tomcat 服務(wù)器(確保 IDEA 中已配置 Tomcat)。
  • 創(chuàng)建 MySQL 數(shù)據(jù)庫,并準(zhǔn)備對應(yīng)表結(jié)構(gòu)。

項(xiàng)目功能實(shí)現(xiàn)步驟

1. 創(chuàng)建項(xiàng)目

  • 打開 IntelliJ IDEA,點(diǎn)擊 File -> New -> Project
  • 在左側(cè)選擇 Java Enterprise,在右側(cè)配置:
    • 勾選 Web Application。
    • 勾選 Java(選擇對應(yīng)的 JDK)。
    • 點(diǎn)擊 Next
  • 輸入項(xiàng)目名稱(如 SimpleLoginApp),選擇項(xiàng)目位置。
  • 勾選 Create Web.xml 生成標(biāo)準(zhǔn)的 Web 項(xiàng)目結(jié)構(gòu)。
  • 點(diǎn)擊 Finish。

2. 配置 Tomcat

  • 點(diǎn)擊頂部菜單的 Run -> Edit Configurations。
  • 點(diǎn)擊左上角的 +,選擇 Tomcat Server -> Local。
  • 配置 Tomcat:
    • 填寫 Name,如 Tomcat-SimpleLoginApp。
    • 在 Application Server 中選擇 Tomcat(點(diǎn)擊 Configure 指向本地的 Tomcat 安裝目錄)。
    • 在 Deployment 選項(xiàng)卡中,點(diǎn)擊 +,選擇 Add Artifact,并添加項(xiàng)目的 WAR 包。
  • 點(diǎn)擊 Apply -> OK。

3. 項(xiàng)目文件結(jié)構(gòu)

創(chuàng)建后的項(xiàng)目基本結(jié)構(gòu)如下:

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. 創(chuàng)建數(shù)據(jù)庫和表

使用 MySQL 創(chuàng)建一個(gè)簡單的 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. 實(shí)現(xiàn)功能

1. 數(shù)據(jù)庫連接工具類

在 com.example.controller 包中創(chuàng)建 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 包中創(chuàng)建 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);
            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 包中創(chuàng)建 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 包中創(chuàng)建 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>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>

啟動項(xiàng)目

  • 運(yùn)行 Tomcat 服務(wù)器。
  • 打開瀏覽器訪問登錄頁面:http://localhost:8080/SimpleLoginApp/login.jsp。
  • 測試注冊、登錄和查看用戶列表功能。

這樣就可以實(shí)現(xiàn)一個(gè)基礎(chǔ)的 Java Web 應(yīng)用。如果有更多需求,可以繼續(xù)擴(kuò)展!

總結(jié)

到此這篇關(guān)于使用IntelliJ IDEA創(chuàng)建簡單的Java Web項(xiàng)目的文章就介紹到這了,更多相關(guān)IDEA創(chuàng)建Java Web項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot集成本地緩存Caffeine的三種使用方式(小結(jié))

    springboot集成本地緩存Caffeine的三種使用方式(小結(jié))

    本文主要介紹了springboot集成本地緩存Caffeine的三種使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 淺談java異常處理(父子異常的處理)

    淺談java異常處理(父子異常的處理)

    下面小編就為大家?guī)硪黄獪\談java異常處理(父子異常的處理)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • SpringBoot-Mail工具實(shí)現(xiàn)郵箱驗(yàn)證碼登錄注冊功能

    SpringBoot-Mail工具實(shí)現(xiàn)郵箱驗(yàn)證碼登錄注冊功能

    現(xiàn)在許多pc程序都有著使用郵箱驗(yàn)證碼實(shí)現(xiàn)登錄注冊的功能,那么我們應(yīng)該如何完成郵箱驗(yàn)證碼功能呢,我們可以使用springboot內(nèi)置的springboot-mail再結(jié)合redis來完成這個(gè)功能,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • RocketMQ順序消息的原理與特點(diǎn)

    RocketMQ順序消息的原理與特點(diǎn)

    RocketMQ作為一款純java、分布式、隊(duì)列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時(shí)消息、消息回溯等,本篇我們了解如何實(shí)現(xiàn)順序消息的原理與特點(diǎn)
    2023-02-02
  • Java中List刪除元素的幾種方法總結(jié)推薦

    Java中List刪除元素的幾種方法總結(jié)推薦

    這篇文章主要給大家介紹了關(guān)于Java中List刪除元素的幾種方法總結(jié),相信大家在日常的開發(fā)過程中,經(jīng)常需要對List或Map里面的符合某種業(yè)務(wù)的數(shù)據(jù)進(jìn)行刪除,需要的朋友可以參考下
    2023-10-10
  • Java使用IO模擬注冊登錄

    Java使用IO模擬注冊登錄

    這篇文章主要為大家詳細(xì)介紹了Java使用IO模擬注冊登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 流式圖表拒絕增刪改查之kafka核心消費(fèi)邏輯下篇

    流式圖表拒絕增刪改查之kafka核心消費(fèi)邏輯下篇

    這篇文章主要為大家介紹了流式圖表拒絕增刪改查之kafka核心消費(fèi)邏輯講解的下篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • java實(shí)現(xiàn)在線聊天系統(tǒng)

    java實(shí)現(xiàn)在線聊天系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)在線聊天系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • SpringBoot框架如何操作Excel和PDF

    SpringBoot框架如何操作Excel和PDF

    Excel和PDF都是常見的辦公文件類型,在實(shí)際需求中有著較多的應(yīng)用,excel經(jīng)常用來處理數(shù)據(jù),PDF文件格式可以將文字、字型、格式、顏色及獨(dú)立于設(shè)備和分辨率的圖形圖像等封裝在一個(gè)文件中,本文就講述下SpringBoot框架如何操作這兩種類型的文件
    2021-06-06
  • Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程

    Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程

    Ecppse 使用了 ESP-IDF 中的 Makefile 支持。這意味著您需要從創(chuàng)建 ESP-IDF 項(xiàng)目開始。您可以使用 github 中的 idf-template 項(xiàng)目,接下來通過本文給大家介紹Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程,感興趣的朋友一起看看吧
    2021-10-10

最新評論