我有一个servlet,它的init方法必须对自己进行一些HTTP调用。这是因为我正在使用嵌入式应用程序启动,它的主界面是RESTful API。我不能也不想真正使用内部类,因为它们没有记录并且难以使用。所以我更喜欢通过本地HTTP使用REST API。
因此,我扩展了App附带的servlet,并修改了init方法,以便启动一个线程并对自己进行一些HTTP调用。目前我硬连线“http://localhost:port/servlet/mapping/
”作为路径,但我希望有一些动态至少可以检测端口号和映射的东西。
有没有可行的方法呢?我发现很多例子都是从HttpServletRequest
对象中提取信息的,但是在init方法中你没有它。你所拥有的就是ServletContext
。
啊,顺便说一句,我使用的是servlet API 3.0。
答案 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容器可以"监听"在多个端口上,即使只有一个端口,也没有标准方法可以知道端口号。