簡體   English   中英

Tomcat Java Servlet路徑

[英]Tomcat Java Servlet path

我在Eclipse中弄亂了Maven / Tomcat / Java。 我已經制作了這個Java servlet,但是當我轉到localhost:xxxx / myapp / rest時,我的GET請求沒有得到響應,我得到了404。我想如果將@path放在/ rest中,我可以發送網址的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();

    }
}

這不是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類的東西。

當然,這都是可配置的。

發生這種情況是因為您的servlet無法將POJO轉換為適當的HTTP響應。

而不是return array.toString();
嘗試return Response.status(200).entity(array.toString()).build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM