request.getServerPort 和 request.getLocalPort 区别

来源:互联网 发布:java math保留两位小数 编辑:程序博客网 时间:2024/05/29 12:35

在获取请求的应用IP端口时,会有两个方法可以用,但是两个方法有时得到的值却不一样,具体原因是两个方法获取的端口来源不一样。

getLocalPort获取的是应用服务器的端口,即该应用的实际端口,无论请求经过了多少代理,转发,getLocalPort只取最后的端口,也就是应用的端口。

getServerPort获取的是URL请求的端口,比如你的请求时127.0.0.1:8080,应用服务器的端口是80,那么getServerPort得到的端口是8080。而getLocalPort得到的是80

在具体的应用当中,跳转后的端口getServerPort容易发生变化。如http://localhost:8080/demo/index.jsp跳转到http://localhost:8081/demo/index.jsp

后,当前获取的端口是8080(getServerPort获取的是URL请求的端口),但页面刷新后再次获取的端口是8081.

以前也遇到过一个奇怪的问题,server端用getServerPort获取端口号并以报文的形式返回,通过浏览器获取的报文是没问题的,端口号是8081,但是通过板子(arm等)获取的报文端口号是80,it‘s weird,uuh。不过换成getLocalPort就OK了,用板子为什么会发生这种情况,没有搞清楚。Google很多,可能是request的时候被转发了。。。。