com.sun.net.httpserver.HttpServer
類(lèi)。首先創(chuàng)建一個(gè)HttpServer
實(shí)例,然后為每個(gè)URI路徑添加一個(gè)處理程序,最后啟動(dòng)服務(wù)器監(jiān)聽(tīng)特定端口。 Java 提供了多種方式來(lái)搭建 HTTP 服務(wù)器,常見(jiàn)的有使用 Servlet、Spring Boot 等。
一、使用 Servlet 搭建簡(jiǎn)單 HTTP 服務(wù)器
1、環(huán)境準(zhǔn)備
確保已安裝 JDK。
選擇一個(gè)合適的集成開(kāi)發(fā)環(huán)境(IDE),如 IntelliJ IDEA 或 Eclipse。
2、創(chuàng)建項(xiàng)目
在 IDE 中創(chuàng)建一個(gè)新的 Web 項(xiàng)目。
3、添加依賴(lài)
如果使用 Maven 構(gòu)建工具,在pom.xml
中添加以下依賴(lài):
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency>
4、編寫(xiě) Servlet
創(chuàng)建一個(gè)類(lèi)繼承HttpServlet
并重寫(xiě)相關(guān)方法。
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getWriter().write("<h1>Hello, World!</h1>"); } }
5、配置 Web 部署描述符(web.xml)
在WEB-INF
目錄下創(chuàng)建web.xml
文件,進(jìn)行 Servlet 映射配置:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="4.0"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.example.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
6、部署和運(yùn)行
將項(xiàng)目打成 WAR 包,部署到支持 Servlet 的服務(wù)器(如 Tomcat)上。
啟動(dòng)服務(wù)器,通過(guò)瀏覽器訪問(wèn)http://localhost:8080/項(xiàng)目名/hello
即可看到輸出結(jié)果。
二、使用 Spring Boot 搭建 HTTP 服務(wù)器
1、環(huán)境準(zhǔn)備
確保已安裝 JDK。
選擇一個(gè)合適的 IDE。
2、創(chuàng)建項(xiàng)目
可以使用 Spring Initializr(https://start.spring.io/)生成一個(gè)基本的 Spring Boot 項(xiàng)目,選擇依賴(lài)Spring Web
。
3、編寫(xiě)控制器
創(chuàng)建一個(gè)類(lèi)并使用@RestController
注解,定義請(qǐng)求處理方法。
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String sayHello() { return "Hello, World!"; } }
4、主應(yīng)用程序類(lèi)
確保有一個(gè)主類(lèi)使用@SpringBootApplication
注解,作為應(yīng)用程序的入口。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
5、運(yùn)行項(xiàng)目
直接在 IDE 中運(yùn)行主類(lèi),或者使用命令行mvn spring-boot:run
。
通過(guò)瀏覽器訪問(wèn)http://localhost:8080/hello
即可看到輸出結(jié)果。
FAQs
問(wèn)題1:如何在 Java 中使用 Servlet 處理表單提交?
答:在 Servlet 中可以通過(guò)request.getParameter
方法獲取表單提交的數(shù)據(jù),對(duì)于一個(gè)提交用戶名和密碼的表單,可以在 Servlet 中這樣處理:
String username = request.getParameter("username"); String password = request.getParameter("password");
然后根據(jù)獲取到的數(shù)據(jù)進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理。
問(wèn)題2:Spring Boot 中的@RestController和@Controller有什么區(qū)別?
答:@RestController
是@Controller
和@ResponseBody
的組合注解。@Controller
用于處理傳統(tǒng)的基于 MVC 模式的請(qǐng)求,返回的是視圖名稱(chēng);而@RestController
則直接將方法的返回值作為 HTTP 響應(yīng)體返回,通常用于構(gòu)建 RESTful API。