gpt4 book ai didi

java - 仅使用 Jersey 和 Java 创建一个简单的 html 服务器

转载 作者:行者123 更新时间:2023-12-01 10:55:09 25 4
gpt4 key购买 nike

不知道为什么我在寻找使用 Jersey 制作简单网络服务器的方法时遇到如此大的麻烦。

public class AnotherJerseyHttpServer {

public static void main(String[] args) throws IOException {
System.out.println("Starting Crunchify's Embedded Jersey HTTPServer...\n");
HttpServer webServer = createHttpServer();
webServer.start();
System.out.println(String.format("\nJersey Application Server started with WADL available at " + "%sapplication.wadl\n", getURI()));
System.out.println("Started Crunchify's Embedded Jersey HTTPServer Successfully !!!");
}

public static HttpServer createHttpServer() throws IOException {
ResourceConfig rc = new PackagesResourceConfig("com.daford");
// This tutorial required and then enable below line: http://crunfy.me/1DZIui5
//rc.getContainerResponseFilters().add(CrunchifyCORSFilter.class);
return HttpServerFactory.create(getURI(), rc);
}

private static URI getURI() {
return UriBuilder.fromUri("http://" + sHostname() + "/").port(4444).build();
}

private static String sHostname() {
String hostName = "localhost";
try {
hostName = InetAddress.getLocalHost().getCanonicalHostName();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return hostName;
}
}

并且

@Path("api")
public class RestAPI {


@GET
@Produces(MediaType.TEXT_PLAIN)
public String get() {
return "this works";
}
}

我可以做http://localhost:4444/api并得到“这有效”。现在我如何允许基于传入 URL 的 html 文件?我获得了各种 MediaType/mimi 信息,但我无法在网上找到任何信息来告诉我如何根据传入的 URL 返回文件。

最佳答案

假设您需要返回的文件打包在您的WAR文件中,您可以尝试以下解决方案:

使用Google Guava

@Path("/{fileName: .+}")
@Produces(MediaType.TEXT_HTML)
public class HtmlResource {

@GET
public Response getPage(@PathParam("fileName") String fileName) throws IOException {
URL url = Resources.getResource(fileName);
return Response.ok(Resources.toString(url, Charsets.UTF_8)).build();
}
}

使用纯 Java 代码

@Path("/{fileName: .+}")
@Produces(MediaType.TEXT_HTML)
public class HtmlResource {

@GET
public Response getPage(@PathParam("fileName") String fileName) throws IOException {
InputStream stream = HtmlResource.class.getClassLoader()
.getResourceAsStream(fileName);
String responseContent = read(stream);
return Response.ok(responseContent).build();
}

private String read(InputStream stream) throws IOException {
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(
stream, StandardCharsets.UTF_8))) {
return buffer.lines().collect(Collectors.joining("\n"));
}
}
}

例如,fileName 可以是 assets/index.html

关于java - 仅使用 Jersey 和 Java 创建一个简单的 html 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com