5.2.3 获得网络连接信息

优质
小牛编辑
129浏览
2023-12-01

由于客户端浏览器和服务端进行交互是建立在TCP连接基础上的,因此,有时在服务端就需要知道客户端的一些网络连接信息,因此,ServletRequest接口定义了若干可以获得网络连接信息的getter方法。通过这些方法,可以获得客户端和服务端的IP、端口以及访问协议等信息。

假设客户端的IP是192.168.18.10,服务器的IP是192.168.18.254,服务器主机名是webserver。并通过如下的URL来访问Servlet。

http://localhost:8080/demo/servlet/TestServlet?name=mike&age=52

使用上面的URL访问Sevlet将产生如下的HTTP请求消息:

GET /demo/servlet/TestServlet?name=mike&age=52 HTTP/1.1

Accept: */*

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0

Host: localhost:8080

Connection: Keep-Alive

下面是ServletRequest接口中定义的用于获得网络连接信息的方法:

1. getRemoteAddr方法

该方法返回客户机用于发送请求的IP地址(192.168.18.10)。

2. getRemoteHost方法

该方法返回发出请求的客户机的主机名。如果Servlet引擎不能解析出客户机的主机名,则返回客户端的IP地址(192.168.18.10)。

3. getRemotePort方法

该方法返回客户机所使用的网络接口的端口号,这个值是由客户机的网络接口随机分配的,如1078,也有可能是其他的值。

4. getLocalAddr方法

该方法返回Web服务器上接收请求的网络接口使用的IP地址(192.168.18.254)。

5. getLocalName方法

该方法返回Web服务器上接收请求的网络接口使用的IP地址所对应的主机名(webserver)。

6. getLocalPort方法

该方法返回Web服务器上接收请求的网络接口的端口号(8080)。

7. getServerName方法

该方法返回HTTP请求消息的Host字段值的主机名部分(localhost)。

8. getServerPort方法

该方法返回HTTP请求消息的Host字段值的端口号部分(8080)。

9.  getScheme方法

该方法返回请求的协议名,如http、https等,在本例中是http。

10. getRequestURL方法     

该方法返回完整的请求URL(不包括参数部分)。这个方法返回的是StringBuffer类型,而不是String类型。在本例中返回“http://localhost:8080/demo/servlet/TestServlet”。要注意该方法和getRequestURI方法的区别。关于getRequestURI方法的介绍详见5.2.1节的内容。