我正在尝试编写一个Java web应用程序,提供HTML和REST接口。我想创建一个servlet,它将使用JSP提供HTML接口,但是数据也应该可以通过REST访问。
对于REST,我已经有了这样的东西:
@javax.ws.rs.Path("/api/")
public class RestAPI {
... // Some methods
}
和
@WebServlet("/servlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Howdy at ");
}
}
现在,当我将@WebServlet("/servlet")注释更改为@WebServlet("/")时,servlet可能由于与REST的路径冲突而停止工作。
如何在根目录中提供特定路径和HTML上的REST ?
谢谢你,卢卡斯Jendele
这对我来说似乎很好。我做了什么:
-
在我的
pom.xml
,我有一个依赖于org.wildfly.swarm:undertow
(Servlet API)和org.wildfly.swarm:jaxrs
(JAX-RS)。当然还有Swarm Maven插件 -
对于servlet,我只有这个类:
@WebServlet("/")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("Hello from servlet");
}
}
- 对于JAX-RS,我有这两个类:
@ApplicationPath("/api")
public class RestApplication extends Application {
}
@Path("/")
public class HelloResource {
@GET
public Response get() {
return Response.ok().entity("Hello from API").build();
}
}
为了进行测试,我运行curl http://localhost:8080/
和curl http://localhost:8080/api
。结果如预期。(也许我的例子太简单了?)