gpt4 book ai didi

google-app-engine - 如何根据名称将 URL 动态映射到 Java servlet 处理程序? (谷歌应用引擎)

转载 作者:行者123 更新时间:2023-12-02 05:45:54 24 4
gpt4 key购买 nike

我正在寻找的是我可以添加到 Java 类的某种类或注释,这些类或注释专门用于处理特定请求,并根据它们的名称将 URL 映射到这些类。例如,将 URL“.../api/GetContactsRequest”映射到名为 GetContactsRequest 的处理程序(如果不存在这样的处理程序,则为 404)。我知道我可以编写 servlet 并将每个 URL 映射到每个 servlet,但我认为样板路由代码/配置越少越好!这些将主要是应用程序请求处理程序,使用 JSON 进行通信。我还没有弄清楚我将如何处理静态请求,但我很可能只是向用户发送一个大型 Web 应用程序,该应用程序可以自行导航或进行其他操作。

作为背景,我使用的是 Google App Engine,因此我可以访问 yaml 配置及其 servlet API。那么是否有一种标准方法可以使用 Java servlet API 或 Google App Engine 特定的框架来执行此操作?我以前只用过像 Apache 之类的特定 Java servlet 框架,这些框架在我开始使用它们时就已经构建好了,所以我真的不知道这个环境有什么用。总的来说,我对这一切还是陌生的,并且很难了解什么是 Servlet、服务、过滤器、监听器和处理程序,以及哪些最适合我想要/需要的这种简单的路由行为。我担心我会选错,或者甚至不知道适合我需要的那一款。

最佳答案

这就是JAX-RS确实 - 不完全是类名映射,而是通过注释映射。参见 some of the features .

有几种实现方式,我个人使用RESTEasy - 它在 GAE 上完美运行。此外,我使用 Jackson(RESTEasy 附带)来生成 JSON。

如果您需要生成 html,请查看 htmleasy - 它是 RESTEasy 之上的一个薄层,可以使用不同的 html 模板库。它将帮助您将逻辑与表示分开。

编辑:

如果您真的想避免使用标准库并自己编写一些东西,那么可以编写一个 servlet 过滤器来检查请求并将其转发给您的 servlet(或调用自定义代码):

public class ForwardFilter implements Filter {

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {

if(request.getRequestURI().equals("/some/path")){
request.getRequestDispatcher("/path/where/servlet/registered").forward(request, response);
return; // prevents normal request processing

}

// you need this for normal request path
filterChain.doFilter(request, response);
}
}

关于google-app-engine - 如何根据名称将 URL 动态映射到 Java servlet 处理程序? (谷歌应用引擎),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270520/

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