我正在寻找的是某种可以添加到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、服务、筛选器、侦听器和处理程序都是什么,对于我想要/需要的这种简单的路由行为来说,哪个是最好的。我担心我会选错一个,或者甚至不知道哪一个适合我的需求。
发布于 2012-04-23 02:10:30
这就是JAX-RS所做的--不完全是类名映射,而是通过注释进行映射。参见some of the features。
有几个实现,我个人使用RESTEasy -它在GAE上完美地工作。此外,我使用Jackson (与RESTEasy一起提供)来生成JSON。
如果你需要生成超文本标记语言,那么看看htmleasy --它是RESTEasy之上的一个薄层,可以使用不同的超文本标记语言模板库。它将帮助您将逻辑与表示分开。
编辑:
如果您真的想避免使用标准库和自己编写代码,那么编写一个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);
}
}https://stackoverflow.com/questions/10270520
复制相似问题