request.getServletPath() 和 request.getPathInfo() 的用法与区别。

在 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>

那么访问: http://localhost:8080/nowjava/book/show.do

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java