当前位置: 首页 > 知识库问答 >
问题:

Tomcat Java Servlet路径

胡新
2023-03-14

我正在Eclipse中使用Maven/Tomcat/Java。我已经制作了这个java servlet,但是当我转到localhost:xxxx/myapp/rest时,我的get请求没有得到响应,我得到的是404。我想如果我将@path设置为/rest,我就可以向url发送一个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();

    }
}

共有1个答案

曾明诚
2023-03-14

这不是一个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的东西。

当然,这些都是可配置的。

 类似资料:
  • 进入到某个目录的下面,去编辑在某个位置上的文件。你应该了解文件与目录的路径在命令行界面下的表示方法。 层级 目录的层级关系一般使用 / 来表示,Windows 上用的是 \ 。 macOS / Linux /Users/wanghao/desktop Windows C:\Users\wanghao\desktop 上面都表示的是 desktop 这个东西的路径。在 macOS / Linux

  • 路径分为绝对路径和相对路径。 绝对路径的起始点为根目录 / ,例如 /usr/local/bin 就是绝对路径,它指向系统中一个绝对的位置,不受其它因素影响。 相对路径的起始点为当前目录,如果您现在位于 /usr 目录,那么相对路径 local/bin 所指示的位置为 /usr/local/bin 也就是说,相对路径所指示的位置,除了相对路径本身,还受到当前位置的影响。例如 Linux 系统中常见

  • Vim是一个文本编辑器,而文本编辑器(经常)处理文本文件。文本文件储存在文件系统中, 而我们使用路径来描述文件。Vimscript有一些内置的方法会在你需要处理路径时帮上大忙。 绝对路径 有时外部脚本也需要获取特定文件的绝对路径名。执行下面的命令: :::vim :echom expand('%') :echom expand('%:p') :echom fnamemodify('foo.txt'

  • 在以下React应用程序中,有两个路由URLhttp://myapp 正确布线到布局构件。但是,URLhttp://myapp/login 也路由到布局组件,而不是登录。如果我将path=“/login”更改为“/sign”,它将正确路由到登录组件。 React路由器中的“/login”路径将其路由到路由是否有特殊之处?或者我设置这个路由的方式有错误吗?

  • 我的目标是开发一个单一的骆驼路线来映射这些服务器,接受路径中服务器的名称。类似于这样: 我的(简化且不起作用)Blueprint.xml: 问题是,我不知道如何从路径中移除/center、/north或/south,因此头部被传递给目标服务,而目标服务不知道如何处理它。调用:

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

  • 我有以下入口设置: 当我点击时,我被重定向到,并带有NGINX 404未找到。 根据日志,可以看到< code>grafana窗格被查询命中: logger = context traceID = 0000000000000000000000000000 userId = 0 orgId = 0 uname = t = 2022-10-13t 16:19:57.989170173 z level