[英]How can I get my local host and port in a Java servlet method init()?
[英]How to get local mapping of a servlet in its init method?
我有一个servlet,它的init方法必须对其自身进行一些HTTP调用。 这是因为我使用的是嵌入式应用程序,该应用程序可以启动,并且它的主界面是RESTful API。 我不能也不想真正使用内部类,因为它们没有文档记录并且很难使用。 因此,我更喜欢通过本地HTTP使用REST API。
因此,我扩展了App随附的servlet,并修改了init方法,以便它启动线程并对其进行一些HTTP调用 。 目前,我将“ http://localhost:port/servlet/mapping/
”硬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容器可以“监听”多个端口的事实,即使只有一个端口,也没有标准的方式来知道端口号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.