Java 后端与前端交互代码示例 - 基于 HTTP 协议
由于题目中没有具体说明需要实现的功能,因此下面提供一个简单的前后端交互的示例代码,供参考。
前端代码(HTML、JavaScript):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>前后端交互示例</title>
</head>
<body>
<h1>前后端交互示例</h1>
<p>请输入一个数字:</p>
<input type="text" id="input">
<button onclick="sendRequest()">发送请求</button>
<p id="output"></p>
<script>
function sendRequest() {
var num = document.getElementById("input").value;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
document.getElementById("output").innerHTML = xhr.responseText;
} else {
alert("请求失败:" + xhr.status);
}
}
};
xhr.open("POST", 'http://localhost:8080/api/num', true);
xhr.setRequestHeader("Content-type", "application/json");
var data = { num: num };
xhr.send(JSON.stringify(data));
}
</script>
</body>
</html>
该示例中包含一个输入框和一个按钮,用户输入一个数字后点击按钮,会向后端发送一个POST请求,请求的路径为http://localhost:8080/api/num,请求的内容为一个JSON对象,该JSON对象包含一个数字字段num,其值为用户输入的数字。当后端返回响应后,前端会将响应内容显示在页面上。
后端代码(Java):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("服务器已启动,监听端口 8080");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getRemoteSocketAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
String line = reader.readLine();
StringBuilder sb = new StringBuilder();
while (line != null && !line.isEmpty()) {
sb.append(line).append("\n");
line = reader.readLine();
}
String requestBody = sb.toString();
System.out.println("请求内容:\n" + requestBody);
JsonObject jsonObject = new Gson().fromJson(requestBody, JsonObject.class);
int num = jsonObject.get("num").getAsInt();
int result = num * 2;
String responseBody = "输入的数字是:" + num + ",其2倍是:" + result;
System.out.println("响应内容:\n" + responseBody);
writer.println("HTTP/1.1 200 OK");
writer.println("Content-type: text/plain");
writer.println("Content-length: " + responseBody.length());
writer.println();
writer.println(responseBody);
socket.close();
System.out.println("客户端已断开:" + socket.getRemoteSocketAddress());
}
}
}
该示例中使用Java的ServerSocket类创建了一个简单的HTTP服务器,监听端口8080。当有客户端连接时,会读取客户端发送的请求内容,解析其中的数字字段,计算其2倍,并将结果返回给客户端。返回的响应内容包含一个简单的字符串,其中包含输入的数字和其2倍。
需要注意的是,这里的请求和响应都是手动构造的,因此并不是真正的HTTP协议,仅用于示例。在实际开发中,可以使用现成的HTTP库或框架来处理请求和响应。
原文地址: https://www.cveoy.top/t/topic/lLqn 著作权归作者所有。请勿转载和采集!