在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法:
request.getServletPath()
request.getPathInfo()
request.getContextPath()
request.getRequestURI()
我们以 http://localhost:8080/nowjava/book/show.do 访问为例来说明。
request.getServletPath()
返回容器名:/nowjava
request.getRequestURI()
返回完整路径:/nowjava/book/show.do
而 request.getServletPath() 和 request.getPathInfo() 有点复杂,是和 web.xml 里的配置有关,不同的配置,取到的值也是不同的,我们来分情况重点讲解。
1. 如果我们的 servlet-mapping 如下配置:
<servlet-mapping>
<servlet-name>nowjavaAction</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
那么访问: http://localhost:8080/nowjava/book/show.do
request.getServletPath()
返回:/book/show.do
request.getPathInfo()
返回:null
2. 如果我们的 servlet-mapping 如下配置:
<servlet-mapping>
<servlet-name>nowjavaAction</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
那么访问: http://localhost:8080/nowjava/book/show.do
request.getServletPath()
返回:空字符串,注意不是null
request.getPathInfo()
返回:/book/show.do
3. 如果我们的 servlet-mapping 如下配置:
<servlet-mapping>
<servlet-name>nowjavaAction</servlet-name>
<url-pattern>/book/*</url-pattern>
</servlet-mapping>
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。