servlet中getLocalPort()和getServerPort()之间的区别

gir*_*iri 19 java servlets

我学习的servlet,我想出了之间的差异疑问getLocalPort()getServerPort().这getLocalPort()意味着服务器方面只有什么意思getServerPort()

谢谢.

Joa*_*uer 25

在一个简单的设置中(您的应用程序服务器/ servlet容器直接接受客户端的请求),两个方法都将返回相同的值.

当servlet容器不是接受客户端请求的应用程序时(例如,当您使用带有mod_jk的Apache HTTP服务器接受请求并通过AJP将请求转发到Tomcat实例时),getServerPort()则将返回客户端连接到的端口(可能是80,当使用默认端口时)getLocalPort()并将返回Tomcat用于接受来自HTTP服务器的连接的端口(可能是8009或类似的东西).


Pas*_*ent 8

让我们看看javadoc的意思getLocalPort():

返回接收请求的接口的Internet协议(IP)端口号.

这就是我们可以阅读的内容getServerPort():

返回发送请求的端口号.它是Host头值中的":"之后的部分的值(如果有),或者是接受客户端连接的服务器端口.

因此,如果客户端向http://mydomain.com:80/发送请求然后"路由"到另一个端口(可能是另一台机器)上侦听的容器,getServerPort()则会返回80并将getLocalPort()容器的端口返回到转发请求,让我们说7001一个WebLogic实例正在侦听该端口.

  • 当我第一次读到这个问题时,我读了 API,直到我看到 Joachim 的答案(我以此为生),我才立即意识到其中的区别。所以我认为原始发布者(正在“研究 servlet”)为这种差异而苦苦挣扎是相当合理的。 (2认同)