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

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

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

有没有体面的方式来做到这一点? 我发现很多从HttpServletRequest对象中提取信息的例子,但是在init方法中没有它。 你所拥有的就是ServletContext

嗯,顺便说一句,我使用servlet API 3.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容器可以在多个端口上“监听”,即使只有一个端口号,也没有标准的方法可以知道端口号。

链接地址: http://www.djcxy.com/p/67809.html

上一篇: How to get local mapping of a servlet in its init method?

下一篇: How can I run servlet without user interacting