基于Java的Web服務器和應用服務器是面向Web開發的兩種服務器,這兩種服務器雖然都是Java編寫的,但是其功能和使用場景卻有所不同。
Web服務器,也叫做HTTP服務器,主要用于處理靜態資源的訪問請求,例如HTML、CSS、圖片等。Web服務器可以處理基礎的HTTP請求和響應,并能夠將請求轉發到應用服務器或其他服務器上。
public class WebServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.equals(""))
break;
out.println(inputLine);
}
out.close();
in.close();
clientSocket.close();
}
}
}
應用服務器則更專注于處理動態請求,例如使用JSP頁面或Servlet執行動態生成HTML頁面等。應用服務器能夠與Web服務器共同協作,處理更復雜的應用程序請求。
public class ApplicationServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
while (true) {
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.indexOf("GET /") != -1) {
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: application/json");
out.println("\r\n");
out.println("{ \"status\" : \"success\" }");
break;
}
}
out.close();
in.close();
clientSocket.close();
}
}
}
在實際應用中,Web服務器和應用服務器通常會被部署在不同的服務器上,通過一系列的配置和協作來處理Web請求并返回相應的結果。