我正在使用嵌入式Jetty服务器为REST服务创建POC。
我想创建以下资源;
/foo/{id}
/foo/{id}/bar
我要求每个人调用不同的类,每个类都访问路径中的id。
我有以下代码;
Server server = new Server(7777);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);
handler.addServletWithMapping(DefaultServlet.class, "/*");
handler.addServletWithMapping(Foo.class, "/foo/*");
handler.addServletWithMapping(Bar.class, "/foo/*/bar");
不幸的是,这两个请求都会导致Foo.class。
Jetty是否允许我实现这一目标?我可以设置更智能的路径吗?
答案 0 :(得分:2)
我相信这是不可能的。看起来像码头跟Java Servlet Specification一样,那么星号可以在路径的开头或者在路径的末尾。
以下是规范引用:
- 以'*。'前缀开头的字符串用作扩展名映射
- 以“/”字符开头,结尾后缀为“/ *”的字符串用于路径映射。
有关详细信息,请参阅“12.2映射规范”。
所以你应该在你的Foo类中分析request.getPathInfo()
或使用一些可以为你做的框架,f.x。 Spring MVC或Jersey