如何在其init方法中获取servlet的本地映射?

时间:2013-08-28 10:00:27

标签: java servlets

我有一个servlet,它的init方法必须对自己进行一些HTTP调用。这是因为我正在使用嵌入式应用程序启动,它的主界面是RESTful API。我不能也不想真正使用内部类,因为它们没有记录并且难以使用。所以我更喜欢通过本地HTTP使用REST API。

因此,我扩展了App附带的servlet,并修改了init方法,以便启动一个线程并对自己进行一些HTTP调用。目前我硬连线“http://localhost:port/servlet/mapping/”作为路径,但我希望有一些动态至少可以检测端口号和映射的东西。

有没有可行的方法呢?我发现很多例子都是从HttpServletRequest对象中提取信息的,但是在init方法中你没有它。你所拥有的就是ServletContext

啊,顺便说一句,我使用的是servlet API 3.0。

1 个答案:

答案 0 :(得分:0)

在servlet 3中,您可以执行此操作以获取给定servlet的当前映射:

String servletName = servletConfig.getServletName();
ServletRegistration reg = servletConfig.getServletContext().getServletRegistration(servletName);
for(String mapping: reg.getMappings()) {
    // Do something with the mapping
}

关于端口号,考虑到servlet容器可以"监听"在多个端口上,即使只有一个端口,也没有标准方法可以知道端口号。