1、request.getRequestURL()

返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数。

2、request.getRequestURI()

得到的是request URL的部分值,并且web容器没有decode过的

3、request.getContextPath()

返回 the context of the request.

4、request.getServletPath()

返回调用servlet的部分url.

5、request.getQueryString()

返回url路径后面的查询字符串

 

 

示例:

当前url:http://localhost:8080/CarsiLogCenter_new/idpstat.jsp?action=idp.sptopn

1.request.getRequestURL() /http://localhost:8080/CarsiLogCenter_new/idpstat.jsp
2.request.getRequestURI() /CarsiLogCenter_new/idpstat.jsp
3.request.getContextPath() /CarsiLogCenter_new
4.request.getServletPath() /idpstat.jsp
5.request.getQueryString() /action=idp.sptopn


这里来说说用Servlet获取URL地址。在HttpServletRequest类里,有以下六个取URL的函数: 

getContextPath 取得项目名 
getServletPath 取得Servlet名 
getPathInfo 取得Servlet后的URL名,不包括URL参数 
getRequestURL 取得不包括参数的URL 
getRequestURI 取得不包括参数的URI,即去掉协议和服务器名的URL 
 

具体如下图:

Java获取指定url路径的文件 java 获取url_Java获取指定url路径的文件

相对应的函数的值如下: 

getContextPath:/ServletTest 
getServletPath:/main 
getPathInfo:/index/testpage/test 
getRequestURL:http://localhost:8080/ServletTest/main/index/testpage/test 
getRequestURI:/ServletTest/main/index/testpage/test 

假设客户端请求的地址:http://localhost:8082/TestReq/MyServlet/?username=李雷&age=20

 

request.getRequestURL http://localhost:8082/TestReq/MyServlet ---客户请求求的URL,不包括参数数据

 

request.getRequestURI: /TestReq/MyServlet ---将URL的域名和尾随的参数截取掉,剩下的那部分就是URI

 

request.getContextPath: /TestReq ---即斜杆加工程名

 

request.getRealPath("/WEB-INF"): D:\omc_jboss\server\default\.\deploy\TestReq.war\WEB-INF ---工程部署的完整路径字符串接上参数中的字符串

 

request.getMethod: GET ---HTTP请求的的方法名,默认是GET,也可以指定PUT或POST

request.getAuthType: null ---返回包含用来保护servlet身份验证方案的名称,如BASIC和SSL,如果是null表示未不受保护

request.getProtocol: HTTP/1.1 ---返回请求的协议名和版本,如HTTP/1.1等

request.getScheme: http ---返回请求的方案名,如http,ftp,https等

request.getServletPath: /MyServlet ---工程之后到参数之前的这部分字符串

request.getPathInfo: null ---字符串包含与客户端发送请求的URL相关的额外信息

request.getContentLength: -1 ---请求体内容的长度,只对POST和PUT类型的请求有效

request.getContentType: null ---请求体内容类型

request.getServerName: localhost ---服务器主机名

request.getServerPort: 8082 ---服务器上web应用的访问端口

request.getRemoteAddr: 127.0.0.1 ---发送请求的客户端主机的IP

request.getRemoteHost: 127.0.0.1 ---发送请求的客户端主机名,如果不确定返回的是IP

request.getRemoteUser: null ---如果对发送请求的客户端主机用户进行了身份验证,则返回登录信息,否则返回null

request.getPathTranslated: null ---返回一个表示在服务器文件系统上的PathInfol转换成路径的字符串

request.getQueryString: username=李雷&age=20 ---返回URL上的参数部分的字符串,必须是GET的请求才有效,不然报错

这里的URL参数中带有中文,是通过字符转码的:String eQuery=new String(request.getQueryString().getBytes("ISO-8859-1"))

response的响应内容:response.setContentType("text/html;charset=gbk"),才可以正常显示页面中文