1.uri和url的区别
简单的来讲,URL就是在浏览器端输入的 http://www.baidu.com 这个字符串。
在理解URL之前,首先要理解URI的概念。
什么是URI?
Web上每种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个通用资源标志符(Universal Resource Identifier, URI)进行定位。
URI通常由三部分组成:
①访问资源的命名机制;
②存放资源的主机名;
③资源自身 的名称,由路径表示。
如下面的URI:
http://www.why.com.cn/myhtml/html1223/
我们可以这样解释它:
①这是一个可以通过HTTP协议访问的资源,
②位于主机 www.webmonkey.com.cn上,
③通过路径“/html/html40”访问。
URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“://”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。
2.通过request获取URL信息
request.getURL()和request.getURI()
如果我的请求是:http://localhost:8080/ServletTest/servlet/Hello
request.getRequestURI() 返回值类似:/ServletTest/servlet/Hello
request.getRequestURL() 返回值类似:http://localhost:8080/ServletTest/servlet/Hello
再如:
request.getContextPath() = /ServletTest
request.getLocalAddr() = 127.0.0.1
request.getPathInfo() = null
request.getPathTranslated() = null
request.getRemoteAddr() = 127.0.0.1
request.getRequestURI() = /ServletTest/servlet/Hello
request.getScheme() = http
request.getServerName() = 127.0.0.1
request.getServletPath() = /servlet/Hello
request.getClass() = class ornnector.RequestFacade
request.getHeaderNames() = org.apache.tomcat.util.http.NamesEnumerator@1fb050c
request.getLocale() = zh_CN
request.getLocales() = org.apache.catalina.util.Enumerator@1088a1b
request.getParameterMap() = {}
request.getRequestURL() =
request.getUserPrincipal() = null
request.getParameterNames() = java.util.Hashtable$EmptyEnumerator@1db6942
request.getRealPath("newsPub") =
D:\zfsca\.metadata\.plugins\com.genuitec.eclipse.easie.tomcat.myeclipse\tomcat\webapps\ServletTest\newsPub
request.getRealPath("/") =
D:\zfsca\.metadata\.plugins\com.genuitec.eclipse.easie.tomcat.myeclipse\tomcat\webapps\ServletTest\