HttpServletRequest 的几种获取路径的方法

 HttpServletRequest 的几种获取路径的方法如下:

request.getServletPath()
request.getPathInfo()
request.getContextPath()
request.getRequestURI()
request.getRequestURL()
request.getServletContext().getRealPath()
  • getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。 
  • getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中 模糊匹配(不确定) 的路径部分 
  • getContextPath():获取项目的根路径 
  • getRequestURI():获取根路径到地址结尾 
  • getRequestURL():获取请求的地址链接(浏览器中输入的地址) 
  • getServletContext().getRealPath(“/”):获取“/”在机器中的实际地址 
  •  
  • getScheme():获取的是使用的协议(http 或https) 
  • getProtocol():获取的是协议的名称(HTTP/1.11) 
  • getServerName():获取的是域名(xxx.com) 
  • getLocalName():获取到的是IP 

 


 这两种方法的效果是一样的都是用于得到项目的绝对路径,只是前面那种方法不推荐使用了,替代方法就是后面这个方法。

  • request.getRealPath("/")
  • request.getServletContext().getRealPath("/")

 

web.xml 配置一个Servlet 处理所有的请求


    test
    com.bug.test.TestServletPath



    test
    
    /*

com.bug.test.TestServletPath 处理类

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("servletPath:\t\t\t" + request.getServletPath());
    System.out.println("contextPath:\t\t\t" + request.getContextPath());
    System.out.println("contextPath2:\t\t\t" + request.getServletContext().getContextPath());
    System.out.println("pageInfo:\t\t\t" + request.getPathInfo());
    System.out.println("uri:\t\t\t" + request.getRequestURI());
    System.out.println("url:\t\t\t" + request.getRequestURL());
    System.out.println("realPath:\t\t\t" + request.getServletContext().getRealPath("/"));
}

注:PathDemo 是我的项目名

当我的请求路径是 http://localhost:8080/PathDemo/

servletPath:            
contextPath:             /PathDemo
contextPath2:           /PathDemo
pageInfo:                  /
uri:                            /PathDemo/
url:                             http://localhost:8080/PathDemo/
realPath:                    F:\Procedure\JAVA\Frame\SpringMVC\otherDemo\PathDemo\target\PathDemo-1.0-SNAPSHOT\

当我的请求路径是 http://localhost:8080/PathDemo/aaa/bbb

servletPath:            
contextPath:             /PathDemo
contextPath2:            /PathDemo
pageInfo:                   /aaa/bbb
uri:                             /PathDemo/aaa/bbb
url:                             http://localhost:8080/PathDemo/aaa/bbb
realPath:                    F:\Procedure\JAVA\Frame\SpringMVC\otherDemo\PathDemo\target\PathDemo-1.0-SNAPSHOT\

当我们修改web.xml为如下时(注意url-pattern的改变):

 web.xml


    test
    com.bug.test.TestServletPath



    test
    
    /abc/def/*

当我的请求路径是  http://localhost:8080/PathDemo/abc/def/ghi/test.html (url-pattern=/abc/def/*) 

servletPath:            /abc/def
contextPath:            /PathDemo
contextPath2:            /PathDemo
pageInfo:            /ghi/test.html
uri:            /PathDemo/abc/def/ghi/test.html
url:            http://localhost:8080/PathDemo/abc/def/ghi/test.html
realPath:            F:\Procedure\JAVA\Frame\SpringMVC\otherDemo\PathDemo\target\PathDemo-1.0-SNAPSHOT\

总结:

通过观察打印结果,我们可以总结: 

  1. getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。 
  2. getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分 
  3. getContextPath():获取项目的根路径 
  4. getRequestURI:获取根路径到地址结尾 
  5. getRequestURL:获取请求的地址链接(浏览器中输入的地址) 
  6. getServletContext().getRealPath(“/”):获取“/”在机器中的实际地址 
  7. getScheme():获取的是使用的协议(http 或https) 
  8. getProtocol():获取的是协议的名称(HTTP/1.11) 
  9. getServerName():获取的是域名(xxx.com) 
  10. getLocalName:获取到的是IP 

https://blog.csdn.net/qq_27770257/article/details/79438987

你可能感兴趣的:(SpringMVC)