在傳統的Java Web開發中,前后端通常是不分離的,即前端頁面和后端API服務是在同一個項目中進行開發和部署的。在這種情況下,我們可以使用Servlet來處理前端的請求,并返回相應的數據。
在本文中,我們將以一個簡單的示例來演示如何在Java中實現不分離的前后端API接口請求。假設我們有一個需求,需要根據用戶輸入的姓名,返回該用戶的年齡。
首先,我們需要創建一個Servlet來處理用戶的請求。我們可以繼承HttpServlet類,并重寫doGet方法來處理GET請求。具體代碼如下:
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class UserInfoServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {String name = request.getParameter("name");int age = getAgeByName(name); // 根據姓名獲取年齡的方法response.setContentType("application/json");PrintWriter out = response.getWriter();out.println("{ \"name\": \"" + name + "\", \"age\": " + age + " }");}private int getAgeByName(String name) {// 根據姓名查詢年齡的邏輯,這里簡單模擬返回一個固定值return 30;}
}
在上面的代碼中,我們創建了一個UserInfoServlet類,其中重寫了doGet方法來處理GET請求。我們首先從請求中獲取參數name,然后調用getAgeByName方法獲取對應的年齲,最后將結果以JSON格式返回給前端。
接下來,我們需要在web.xml中配置Servlet的映射關系。具體代碼如下:
<servlet><servlet-name>UserInfoServlet</servlet-name><servlet-class>com.example.UserInfoServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>UserInfoServlet</servlet-name><url-pattern>/user-info</url-pattern>
</servlet-mapping>
在web.xml中,我們將UserInfoServlet映射到/user-info路徑,這樣前端就可以通過發送GET請求到/user-info來獲取用戶信息。
最后,我們來編寫一個簡單的前端頁面來發送請求并展示結果。具體代碼如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>User Info</title>
</head>
<body><input type="text" id="name" placeholder="Enter your name"><button onclick="getUserInfo()">Get Info</button><div id="result"></div><script>function getUserInfo() {var name = document.getElementById("name").value;fetch("/user-info?name=" + name).then(response => response.json()).then(data => {document.getElementById("result").innerText = "Name: " + data.name + ", Age: " + data.age;});}</script>
</body>
</html>
在上面的代碼中,我們創建了一個簡單的HTML頁面,其中包含一個輸入框用于輸入姓名,一個按鈕用于發送請求,以及一個用于展示結果的div。當用戶點擊按鈕時,我們通過fetch API發送GET請求到/user-info路徑,并將結果展示在頁面上。
最后,我們可以啟動一個Tomcat服務器來部署我們的應用,并訪問前端頁面來測試接口請求。通過輸入不同的姓名,我們可以看到對應的年齡信息被返回并展示在頁面上。
通過上面的示例,我們演示了如何在Java中實現不分離的前后端API接口請求。在實際項目中,我們可以根據具體的需求和業務邏輯來擴展和優化代碼,實現更加復雜和功能豐富的接口功能。同時,我們也可以考慮使用框架來簡化開發流程,提高代碼的可維護性和可擴展性。希望本文對您有所幫助。
序列圖
下面是一個簡單的序列圖,展示了前端頁面發送請求到后端服務器的過程:
sequenceDiagramparticipant Frontendparticipant BackendFrontend->>Backend: 發送GET請求 /user-info?name=JohnBackend->>Backend: 處