getServletContext()。getInitParameter(“contextName”)不返回url中的端口号

时间:2011-12-14 19:11:28

标签: java servlets port

我正在使用一些旧的jsp应用程序,我们正在移动服务器,所以网址已经改变了。我们获得的新网址包含端口号 - http://example.com:8686/theapp

现在这一行getServletContext().getInitParameter("contextName")会返回example/而不是example:8686/

我可以使用类似的功能或参数,以便端口号显示在网址中吗?

2 个答案:

答案 0 :(得分:6)

getServletContext().getInitParameter()返回给定名称<context-param>的值,该值在web.xml中难以指定。这不是动态值。您基本上需要编辑相关的<context-param>以提供“正确”值。

要动态获取当前HTTP Servlet请求的端口号,您需要使用HttpServletRequest#getServerPort()HttpServletRequest#getLocalPort(),具体取决于您想要获取的端口号:指定的端口号在Host标题中,或者是服务器实际使用的标题。

请注意,您通常使用HttpServletRequest#getContextPath()来获取上下文名称。

答案 1 :(得分:0)

如果您只需要端口:

request.getLocalPort() or request.getServerPort()

如果您需要端口以及IP和上下文名称:

request.getContextPath() or request.getServletPath() or request.getLocalAddr()

有关更多信息,请参阅以下链接:

http://docs.oracle.com/javaee/1.4/api/javax/servlet/ServletRequest.html
http://www.kodejava.org/examples/211.html