2

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

作为背景,我使用的是 Google App Engine,因此我可以访问 yaml 配置及其 servlet API。那么,有没有一种标准的方式来使用 Java servlet API 或 Google App Engine 特定的框架呢?我以前只使用过特定的 Java servlet 框架,例如 Apache 和其他东西,在我开始研究它们时它们都已经构建好了,所以我真的不知道在这个环境中有什么用处。一般来说,我对这一切也很陌生,并且在涉足 Servlet、服务、过滤器、侦听器和处理程序的所有内容时遇到了麻烦,这对于我想要/需要的这种简单的路由行为来说是最好的。我担心我会选错一个,或者甚至不知道适合我需要的那个。

4

1 回答 1

5

这就是JAX-RS- 不完全是类名映射,而是通过注释映射。查看一些功能

有几种实现,我个人使用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);
    }
}
于 2012-04-22T18:10:29.913 回答