1. 路劲可分为 绝对路径 和 相对路径

2. 绝对路径 (开头带"/"

  前端: http://localhost:8080/myWebApp/user/login.jsp

     /myWebApp/user/login.jsp

  后端: /user/login.jsp

  这里可以看出一个区别, 其中"/"这个斜杠在前后端有着不同的意义:

  前端--> (表示) 服务器的根路径(例如:http://localhost:8080/)

  后端-->(表示) 应用的根路径 (例如: http://localhost:8080/yourWebAppName/)

3. 相对路径 (开头不带"/")

举个例子, 假如当前的路径是 http://localhost:8080/myWebApp/user/login.jsp

那么这时候访问 “main.jsp”页面,即访问的是 http://localhost:8080/myWebApp/user/main.jsp

  也就是说,使用相对路径,那么访问的是 当前页面路径 所属 目录 下的文件路径

  这个特性无论是在前端 、 后端 都是一样的。

  在java中,无论是JSP或者Servlet , 都可以通过request这个对象获得requestURL( ) , 该方法返回当前所访问的页面的绝对路径的一个StringBuilder。

  应用服务器正是通过该路径来得到用户想要访问的页面路径。

  而一般使用forward时,就是通过修改该路径(无论当前指定的是绝对路径或者相对路径),来请求新的路径。

  1. Base path scheme+serverName+serverport+requestContext): http://192.168.10.64:8080  //应用路径
  1. req.reqeustURL(): http://192.168.10.64:8080/testPath/test.do   //请求路径
  1. req.requestURI(): /testPath/test.do    //请求路径(相对服务器根目录部分)
  1. req.getSession.getServletContext().getRealPath("")F:\tomcat\apache-tomcat-7.0.47\webapps\testPath
  1. //根目录的真实路径
  1. req.getSession().getServletContext().getResource("/") : jndi:/localhost/testPath/index.jsp //这里必须要‘/'开头
  1. req.getServletPath(): /test.do  //servlet的映射路径
  1. req.getSession().getServletContext().getContextPath()  : /testPath   //应用上下文路径(标准的)
  1. req.getContextPath():    //请求request 所指向的应用上下文路径 一般为应用路径,即/AppName (如果场景是把整个应用服务器当成一个应用,所以应用上下文为"/testPath")
  1. testPath App
    /testPath
  2. req.getRealPath("file.upload") :
  3. F:\tomcat\apache-tomcat-7.0.47\webapps\testPath\file.upload
  4. req.getSession().getServletContext().getResource("/") :
  5. jndi:/localhost/testPath/index.jsp
  6. req.getSession.getServletContext().getRealPath("") :
  7. F:\tomcat\apache-tomcat-7.0.47\webapps\testPath
  8. req.getSession().getServletContext().getContextPath() :
  9. /testPath
  10. req.getRequestURL() :
  11. http://192.168.10.64:8080/testPath/test.do
  12. req.getRequestURI() :
  13. /testPath/test.do
  14. req.getAuthType() :
  15. null
  16. req.getMethod() : :
  17. GET
  18. req.getQueryString() :
  19. null
  20. req.getContentType() :
  21. null
  22. req.getContextPath() :
  23. /testPath
  24. req.getContentLength() :
  25. -1
  26. req.getLocale() :
  27. zh_CN
  28. req.getLocalAddr() :
  29. 192.168.10.64
  30. req.getLocalName() :
  31. c-PC
  32. req.getLocalPort() :
  33. 8080
  34. req.getRemoteAddr() :
  35. 192.168.10.64
  36. req.getRemoteHost() :
  37. 192.168.10.64
  38. req.getRemotePort() :
  39. 61783
  40. req.getRemoteUser() :
  41. null
  42. req.getScheme() :
  43. http
  44. req.getServerName() :
  45. 192.168.10.64
  46. req.getServerPort() :
  47. 8080
  48. req.getServletPath() :
  49. /test.do
  50. /testPath
  51. req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+"/" :
  52. http://192.168.10.64:8080/testPath/
  53.  
  54. ROOT
  1. req.getContextPath() :
  2. ""
  1. req.getRealPath("file.upload") :
  2. F:\tomcat\apache-tomcat-7.0.47\webapps\ROOT\file.upload
  3. req.getSession().getServletContext().getResource("/") :
  4. jndi:/localhost/index.jsp
  5. req.getSession.getServletContext().getRealPath("") :
  6. F:\tomcat\apache-tomcat-7.0.47\webapps\ROOT
  7. req.getSession().getServletContext().getContextPath() :
  8.  
  9. req.getRequestURL() :
  10. http://192.168.10.64:8080/test.do
  11. req.getRequestURI() :
  12. /test.do
  13. req.getAuthType() :
  14. null
  15. req.getMethod() : :
  16. GET
  17. req.getQueryString() :
  18. null
  19. req.getContentType() :
  20. null
  21. req.getContextPath() :
  22.  
  23. req.getContentLength() :
  24. -1
  25. req.getLocale() :
  26. zh_CN
  27. req.getLocalAddr() :
  28. 192.168.10.64
  29. req.getLocalName() :
  30. c-PC
  31. req.getLocalPort() :
  32. 8080
  33. req.getRemoteAddr() :
  34. 192.168.10.64
  35. req.getRemoteHost() :
  36. 192.168.10.64
  37. req.getRemotePort() :
  38. 61836
  39. req.getRemoteUser() :
  40. null
  41. req.getScheme() :
  42. http
  43. req.getServerName() :
  44. 192.168.10.64
  45. req.getServerPort() :
  46. 8080
  47. req.getServletPath() :
  48. /test.do
  49.  
  50. req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+"/" :
  51. http://192.168.10.64:8080/

request 路径随笔的更多相关文章

  1. 超全面的JavaWeb笔记day10<Response&Request&路径&编码>

    1.Response 2.Request 3.路径 4.编码 请求响应流程图 response 1.response概述 response是Servlet.service方法的一个参数,类型为java ...

  2. 项目vue2.0仿外卖APP(二)

    vue-cli开启vue.js项目 github地址:https://github.com/vuejs/vue-cli Vue.js开发利器vue-cli,是vue的脚手架工具. 在工地上,脚手架是工 ...

  3. Python之Web框架Django

    Python之Web框架: Django 一. Django Django是一个卓越的新一代Web框架 Django的处理流程 1. 下载地址  Python 下载地址:https://www.pyt ...

  4. OWIN的理解和实践(三) –Middleware开发入门

    上篇我们谈了Host和Server的建立,但Host和Server无法产出任何有实际意义的内容,真正的内容来自于加载于Server的Middleware,本篇我们就着重介绍下Middleware的开发 ...

  5. 【jmeter】WebSerivice测试

    WebSerivice测试计划的取样器有两种方式:HTTP请求.SOAP/XML-RPC Request. 1. 测试计划 启动JMeter,点击测试计划节点上,重命名测试计划:WebserviceT ...

  6. Day17 表单验证、滚动菜单、WEB框架

    一.表单验证的两种实现方式 1.DOM绑定 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  7. Python 一路走来 Django

    Web 框架 (本质:socket) Python web框架           自己实现socket                - Tornado           基于wsgi       ...

  8. Middleware开发入门

    Middleware开发入门 上篇我们谈了Host和Server的建立,但Host和Server无法产出任何有实际意义的内容,真正的内容来自于加载于Server的Middleware,本篇我们就着重介 ...

  9. Spring @Pathvariable

    先记录下@PathVariable的用法吧: @RequestMapping("/demo/{id}") @ResponseBody public User getUser(@Pa ...

随机推荐

  1. redistribute and Suboptimal routing

    重分发和次优路由 基础环境 拓扑: 分别配置好基本的环境,包含ip地址,路由协议的启用,得到他们的路由表分别为 R1: R2: R3: R4: 1.      在R1上将eigrp和OSPF进行双向重 ...

  2. 8个3D视觉效果的HTML5动画欣赏

    现在的网页中应用了越来越多的3D应用,特别是基于HTML5 Canvas的动画特效,让用户有一种非常震撼的视觉体验.本文收集了8个非常炫酷的3D视觉效果的HTML5动画,都有源代码分享,你可以学习你感 ...

  3. java中Map,List与Set的区别

    Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类 ...

  4. android Timer and TImerTask

    android Timer and TImerTask Caused by: java.lang.IllegalStateException: TimerTask is scheduled alrea ...

  5. Linux下iftop网卡流量监控使用

    在类linux系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.i ...

  6. Silverlight动画学习笔记(三):缓动函数

    (一)定义: 缓动函数:可以将自定义算术公式应用于动画 (二)为什么要用缓动函数: 您可能希望某一对象逼真地弹回或其行为像弹簧一样.您可以使用关键帧动画甚至 From/To/By 动画来大致模拟这些效 ...

  7. Z-BlogPHP 安装出现 (8) Undefined offset: 6 解决方法

    有些cp面板的空间会在每个网页头部和页脚增加两个调用的文件,导致zblogPHP安装出错:(8) Undefined offset: 6 主要国外的主机中PHP配置文件两个选项auto_prepend ...

  8. C#中的interface、virtual和abstract

    一.Abstract: abstract方法必须在abstarct类中声明,没有默认实现,子类必须实现. 二.Virtual: virtual方法可以声明在abstract类中,也可以声明在非abst ...

  9. ActiveMQ之JMSReplyTo

    在下面的例子中,首先创建两个Queue,发送者给一个Queue发送,接收者接收到消息之后给另一个Queue回复一个Message,然后再创建一个消费者来接受所回复的消息.import javax.jm ...

  10. SQLserver利用系统时间生成“2015-11-30 00:00:00.000”类型的时间

    select getdate() ---当前时间:2015-12-18 10:20:24.097 -------------------建立测试表 Create Table #Test ( ID IN ...