首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据URL的名称将它们动态映射到Java servlet处理程序?(Google App Engine)

如何根据URL的名称将它们动态映射到Java servlet处理程序?(Google App Engine)
EN

Stack Overflow用户
提问于 2012-04-23 01:54:24
回答 1查看 3.7K关注 0票数 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等,它们在我开始工作时都已经构建好了,所以我真的不知道在这个环境中有什么用。总的来说,我也是个新手,我很难理解Servlets、服务、筛选器、侦听器和处理程序都是什么,对于我想要/需要的这种简单的路由行为来说,哪个是最好的。我担心我会选错一个,或者甚至不知道哪一个适合我的需求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-23 02:10:30

这就是JAX-RS所做的--不完全是类名映射,而是通过注释进行映射。参见some of the features

有几个实现,我个人使用RESTEasy -它在GAE上完美地工作。此外,我使用Jackson (与RESTEasy一起提供)来生成JSON。

如果你需要生成超文本标记语言,那么看看htmleasy --它是RESTEasy之上的一个薄层,可以使用不同的超文本标记语言模板库。它将帮助您将逻辑与表示分开。

编辑:

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

代码语言:javascript
复制
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);
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10270520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档