图片站wordpress模板,怎么做企业推广,在线学习网站建设,上海网络推广服务版权声明#xff1a;本文为博主原创文章#xff0c;遵循 CC 4.0 BY-SA 版权协议#xff0c;转载请附上原文出处链接和本声明。 本文链接#xff1a; https://blog.csdn.net/qq_27770257/article/details/79438987 最近对于request中的几种“路径”有点混淆#xff0c;查… 版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。 本文链接 https://blog.csdn.net/qq_27770257/article/details/79438987 最近对于request中的几种“路径”有点混淆查找网上资源都没有很好的总结希望此文章能够帮助我理解一下这几种“路径”。 本文章主要讨论以下几种request获取路径的方法 request.getServletPath()
request.getPathInfo()
request.getContextPath()
request.getRequestURI()
request.getRequestURL()
request.getServletContext().getRealPath()123456
以一个简单的例子说明 web.xml配置注意此处的url-pattern项
?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://java.sun.com/xml/ns/javaee xsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd idWebApp_ID version2.5display-nameaab/display-namewelcome-file-listwelcome-filea.jsp/welcome-file/welcome-file-listservletservlet-nametest/servlet-nameservlet-classcom.java.test.TestServlet/servlet-class/servletservlet-mappingservlet-nametest/servlet-nameurl-pattern/*/url-pattern!-- 注意此处 --/servlet-mapping/web-app1234567891011121314151617
TestServlet.java文件
package com.java.test;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class TestServlet extends HttpServlet{Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(servletPath:req.getServletPath());System.out.println(contextPath:req.getContextPath());System.out.println(contextPath2:req.getServletContext().getContextPath());System.out.println(pageInfo:req.getPathInfo());System.out.println(uri:req.getRequestURI());System.out.println(url:req.getRequestURL());System.out.println(realPath:req.getServletContext().getRealPath(/));}}
12345678910111213141516171819202122232425262728
此时请求http://localhost:8080/testweb (url-pattern/*) 打印出来的值为
servletPath:
contextPath:/testweb
contextPath2:/testweb
pageInfo:null
uri:/testweb
url:http://localhost:8080/testweb
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\
12345678
请求http://localhost:8080/testweb/abc 打印的值为
servletPath:
contextPath:/testweb
contextPath2:/testweb
pageInfo:/abc
uri:/testweb/abc
url:http://localhost:8080/testweb/abc
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\
12345678
当我们修改web.xml为如下时注意url-pattern的改变
?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://java.sun.com/xml/ns/javaee xsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd idWebApp_ID version2.5display-nameaab/display-namewelcome-file-listwelcome-filea.jsp/welcome-file/welcome-file-listservletservlet-nametest/servlet-nameservlet-classcom.java.test.TestServlet/servlet-class/servletservlet-mappingservlet-nametest/servlet-nameurl-pattern/abc/def/*/url-pattern!-- 注意此处 --/servlet-mapping/web-app1234567891011121314151617181920
请求http://localhost:8080/testweb/abc/def/ghi/test.html (url-pattern/abc/def/*) 打印的值为
servletPath:/abc/def
contextPath:/testweb
contextPath2:/testweb
pageInfo:/ghi/test.html
uri:/testweb/abc/def/ghi/test.html
url:http://localhost:8080/testweb/abc/def/ghi/test.html
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\1234567
通过观察打印结果我们可以总结 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 以上