繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM