在传统的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: 处