我正在使用一些旧的jsp应用程序,我们正在移动服务器,所以网址已经改变了。我们获得的新网址包含端口号 - http://example.com:8686/theapp
现在这一行getServletContext().getInitParameter("contextName")
会返回example/
而不是example:8686/
。
我可以使用类似的功能或参数,以便端口号显示在网址中吗?
答案 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