我结账了 spring-boot-http-3-jetty 并运行。 它按预期工作[来自第二个请求的 http-3(h3)] 此外,我想使用带有正文的 POST 请求来测试它,所以我添加了以下 thymeleaf 依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
为了处理表单请求添加了控制器
package com.example.demo;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import jakarta.servlet.ServletRequest;
@Controller
public class UploadController {
@GetMapping("/upload")
public String displayUploadForm(ServletRequest request, Model model) throws IOException {
System.out.println("displayUploadForm:" + request.getProtocol());
model.addAttribute("message", "hello from upload controller...");
return "uploadForm";
}
@PostMapping("/handleUpload")
public String handleFileUpload(@RequestParam("file") MultipartFile file, Model model) {
model.addAttribute("message", "You successfully uploaded " + file.getOriginalFilename() + "!");
return "uploadForm";
}
}
添加了百里香模板
<html>
<body>
<div th:if="${message}">
<h2 th:text="${message}"/>
</div>
<div>
<form method="POST" enctype="multipart/form-data" action="/handleUpload">
<table>
<tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr>
<tr><td></td><td><input type="submit" value="Upload" /></td></tr>
</table>
</form>
</div>
</body>
</html>
点击https://demo.local:9002/upload 它显示类似的形式并获取响应标头
alt-svc h3=":9002"; ma=86400; persist=1
我在 Firefox 中有导入证书。 还可以在使用 (http-2 和响应标头
RestController
提供初始请求后使用
alt-svc h3=":9002"; ma=86400; persist=1
GET 请求与 http-3 一起使用
有时还注意到它的工作 http-2 用于连续请求。
注:
是否还有其他配置需要检查才能与 http-3(h3) 一起使用?
提前致谢:-)
你的代码对我有用。我在 MacOS 上使用最新的 Firefox。
您获取的存储库专门讨论了在 MacOS 上设置项目,而不是在 Windows 上。
注意: 对于 Windows,仅在 Windows Server 2022 和 Windows 11 上支持 HTTP/3。默认情况下未启用。
重要提示: 请遵循此答案 - 如何在 IIS 上启用 HTTP/3? 在 Windows 上启用 HTTP/3。
我提供了我在 MacOS 上遵循的步骤。
签出代码后,我执行了命令 -
brew install --HEAD -s curl/curl.rb
在我的系统上安装curl。
执行以下命令在PATH上设置curl:
export PATH="/opt/homebrew/opt/curl/bin:$PATH" >> ~/.zshrc
source ~/.zshrc
which curl
然后我通过命令
sudo nano /etc/hosts
(MacOS)编辑了主机文件。在您的情况下,您必须为 Windows 编辑 C:\Windows\System32\Drivers\etc\hosts
以添加以下 IP 和域名。
127.0.0.1 demo.local
现在,我已经添加了您提供的代码库。项目结构。