首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Unity3D 與 JSP/Tomcat 服務器數據傳輸實戰(一):從零搭建 Java Web 服務端

     編輯:Java 綜合教學

Unity3D 與 JSP/Tomcat 服務器數據傳輸實戰(一):從零搭建 Java Web 服務端

本系列將完整記錄 Unity3D 客戶端與 Java Web 服務端(JSP + Tomcat)進行數據交互、文件上傳下載的全過程。第一篇專注於服務端環境搭建:使用 MyEclipse 創建 Java Web 項目、配置 Tomcat、編寫 Servlet 處理 GET/POST 請求、部署驗證,為後續 Unity 端調用打下堅實基礎。

一、開發環境與工具鏈

工具 版本 說明
IDEMyEclipse 2017 / Eclipse + Web Tools集成 Tomcat 管理、Servlet 向導、JSP 編輯
Servlet 容器Apache Tomcat 7.0 / 8.5 / 9.0生產環境建議 8.5+,支持 Servlet 3.1+
客戶端Unity 5.1.0f3 / 2020+ LTS使用 UnityWebRequest 替代舊 WWW 類
JDK1.8 / 11 / 17項目編碼統一 UTF-8

二、創建 Java Web 項目步驟詳解

1. 新建項目

MyEclipse 中:File → New → Web Project,項目名如 UnityServer,目標運行時選擇已配置的 Tomcat 7。

新建Web項目

2. 項目結構概覽

標準 Maven/Web 目錄結構:

UnityServer/
├── src/                    # Java源碼根目錄
│   └── com.yourname.servlet/  # 包結構:com.英文名.功能模塊
├── WebRoot/                # Web資源根目錄(部署到Tomcat根目錄)
│   ├── WEB-INF/
│   │   ├── web.xml         # 核心部署描述符
│   │   ├── lib/            # 第三方JAR包
│   │   └── classes/        # 編譯輸出.class文件
│   ├── index.jsp           # 項目首頁入口
│   └── css/js/images/      # 靜態資源
└── .settings/.project      # Eclipse項目配置

工程文件結構

3. 包命名規範

推薦:com.{personal}.{module},例如 com.lulei.servlet。右鍵 src → New → Package。

新建包

三、編寫 Servlet 處理 GET/POST 請求

1. 創建 Servlet(向導方式)

右鍵包 → New → Servlet,類名 FormServlet,勾選 doGet、doPost,URL Mapping 填 /form。

創建Servlet

映射地址

2. 核心代碼實現

package com.lulei.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FormServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        // 設置編碼,防止中文亂碼
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        
        System.out.println("=== doGet 請求 ===");
        System.out.println("用戶名:" + username);
        System.out.println("密碼:" + password);
        
        resp.getWriter().write("GET 請求接收成功:" + username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        
        System.out.println("=== doPost 請求 ===");
        System.out.println("用戶名:" + username);
        System.out.println("密碼:" + password);
        
        resp.getWriter().write("POST 請求接收成功:" + username);
    }
}

清理多餘代碼

四、配置首頁 index.jsp 測試表單

1. 設置頁面編碼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

修改編碼

2. 添加 GET/POST 測試表單

<body>
    <h2>Unity-Server 交互測試頁面</h2>
    
    <!-- GET 請求表單 -->
    <form action="<%=request.getContextPath()%>/form" method="get">
        <fieldset>
            <legend>GET 請求測試(參數顯示在URL)</legend>
            用戶名:<input type="text" name="username" /><br/>
            密碼:<input type="password" name="password" /><br/>
            <input type="submit" value="提交 GET" />
        </fieldset>
    </form>
    
    <hr/>
    
    <!-- POST 請求表單 -->
    <form action="<%=request.getContextPath()%>/form" method="post">
        <fieldset>
            <legend>POST 請求測試(參數在請求體)</legend>
            用戶名:<input type="text" name="username" /><br/>
            密碼:<input type="password" name="password" /><br/>
            <input type="submit" value="提交 POST" />
        </fieldset>
    </form>
</body>

添加表單

五、Tomcat 部署與驗證全流程

1. 配置 Tomcat 服務器

MyEclipse 窗口 → Servers 視圖 → 右鍵 New → Server → 選擇 Tomcat 版本 → 指定安裝路徑 → Finish。

添加Tomcat

選擇Tomcat版本

2. 部署項目

Servers 視圖中右鍵 Tomcat → Add and Remove → 將 UnityServer 移至右側 → Finish。再右鍵 Tomcat → Redeploy(或 Publish)完成部署。

部署項目

3. 啟動 Tomcat 獲取端口與 IP

啟動後控制台輸出關鍵信息:

INFO: Starting ProtocolHandler ["http-nio-8080"]

默認端口 8080。若被佔用,修改 server.xml 中 <Connector port="8080" .../>。

控制台端口

獲取本機 IPv4:Win+R → cmd → ipconfig,記錄 IPv4 Address(如 192.168.1.100)。

獲取IP

4. 瀏覽器驗證

訪問:https://{IP}:{Port}/{ProjectName}/ 例如 https://192.168.1.100:8080/UnityServer/

首頁測試

分別點擊 GET/POST 提交,觀察:

  • GET:地址欄顯示 ?username=xxx&password=yyy,便於 Unity UnityWebRequest.Get 構建 URL。
  • POST:地址欄不變,參數在請求體,安全性較高,對應 Unity UnityWebRequest.Post。

GET請求效果

POST請求效果

5. 控制台日誌確認

MyEclipse Console 應輸出:

=== doGet 請求 ===
用戶名:test
密碼:123456
=== doPost 請求 ===
用戶名:admin
密碼:888888

控制台日誌

六、關鍵注意事項與避坑指南

  1. 編碼統一 UTF-8:JSP pageEncoding、web.xml <filter> CharacterEncodingFilter、Servlet req.setCharacterEncoding、Tomcat server.xml URIEncoding="UTF-8" 四處一致。
  2. 修改代碼必須 Redeploy:Java 類修改後需重新部署(或啟用熱部署插件 JRebel),JSP 修改通常自動生效。
  3. 端口衝突處理:8080 被佔用時修改 conf/server.xml,或關閉佔用進程(netstat -ano | findstr 8080)。
  4. 防火牆/雲安全組:雲服務器需開放 8080 入站規則,本地測試關閉防火牆或添加例外。
  5. Servlet 3.0+ 註解替代 web.xml:現代項目可用 @WebServlet("/form") 省去 XML 配置,本文為兼容性演示 XML 方式。

七、下一步預告

服務端已就緒,下一篇將實戰 Unity3D 客戶端調用:

  • 使用 UnityWebRequest 發送 GET/POST 請求
  • JSON 數據序列化與反序列化(JsonUtility/Newtonsoft.Json)
  • 文件上傳(multipart/form-data)與下載實現
  • 錯誤處理、超時重試、加密簽名等工程化封裝

八、總結

本文從零構建了支持 GET/POST 的 Java Web 服務端,涵蓋 MyEclipse 項目創建、Servlet 編寫、JSP 表單測試、Tomcat 部署驗證 全流程。掌握這套流程,你就擁有了與 Unity、小程序、App、前端框架通用的 HTTP 後端基礎設施。記住:修改即部署,日誌是眼睛,編碼要統一。下篇見,讓我們讓 Unity 動起來!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved