Tomcat Java Servlet路径

时间:2017-05-17 18:48:36

标签: java tomcat servlets

我在Eclipse中乱搞Maven / Tomcat / Java。我已经制作了这个java servlet,但是当我去localhost:xxxx / myapp / rest时,我没有得到我的GET请求的响应,我得到了404.我想如果我把@path放到/休息我可以向网址发送GET请求,但它无法正常工作。 有谁知道这是什么问题?谢谢!

@Path("/rest")
public class WorldResource {
    @GET
    @Produces("application/json")
    public String getOrders() {
        WorldService service = ServiceProvider.getWorldService();
        JsonArrayBuilder jab = Json.createArrayBuilder();
        for (Country o : service.getAllCountries()) {
            JsonObjectBuilder job = Json.createObjectBuilder();
            job.add("iso2Code", o.getCode());
            job.add("iso3Code", o.getIso3Code());
            job.add("capital", o.getCapital());
            job.add("continent", o.getContinent());
            job.add("region", o.getRegion());
            job.add("surface", o.getSurface());
            job.add("population", o.getPopulation());
            job.add("government", o.getGovernment());
            job.add("latitude", o.getLatitude());
            job.add("longitude", o.getLongitude());
            jab.add(job);
        }
        JsonArray array = jab.build();
        System.out.println(array);
        return array.toString();

    }
}

2 个答案:

答案 0 :(得分:2)

这不是一个servlet,它是一个JAX-RS资源。这不会在Tomcat中“开箱即用”,你需要部署一个JAX-RS实现(比如Jersey)。

Servlet看起来像这样:

@WebServlet(name = "WorldServlet", urlPatterns = {"/rest"})
public class WorldServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("application/json");
        try (PrintWriter out = response.getWriter()) {
            ... // your code
            out.println(array.toString());
        }
    }
}

因此,您真的只需要查看安装JAX-RS提供程序。此外,当你这样做时,可能性很高它仍然不会在/rest,因为JAX-RS实现通常根植于某个路径,所以你最终可能会得到像/resources/rest这样的东西。

当然,这都是可配置的。

答案 1 :(得分:-1)

这可能是因为您的servlet无法将POJO转换为适当的HTTP响应。

而不是--full-history 试试return array.toString();