我们都知道,通过ServletContext类可以获取工程路径(虚拟路径)以及工程部署在服务器硬盘上的绝对路径

那我们首先应该了解一个工程是怎样部署的,以idea为例

不知道大家有没有发现每当我们启动服务器时,都会有这样一个地址

这是一个什么地址呢,我们打开发现它的目录内容如下

有没有熟悉感?我们对比一下Tomcat的目录

发现了吗,这个路径其实就是IDEA整合Tomcat之后,Tomcat被拷贝的一些副本内容。

进入这个地址的conf/Catalina/localhost目录,我们发现了这样一个文件

回想一下conf/Catalina/localhost这个路径,我们使用tomcat部署项目的第三种方式是不是也是在这个路径下创建一个.xml的配置文件

显而易见idea部署项目时使用的其实就是第三种tomcat部署项目的方式

因为我们不可能每次创建工程在tomcat的webapps目录下,所以idea会根据我们设置的工程部署路径以及虚拟路径生成出一个配置文件

下图分别为我们设置的虚拟路径以及工程部署路径


然后每当我们部署项目时,就会创建我们所设置的工程部署路径,随后我们在网站访问的其实都是该路径下的内容而不是开发环境文件夹下的内容,但两者内容其实一样,工程部署路径的内容是完全拷贝开发环境中web文件夹下的内容

这样就解释了为什么context.getRealPath("/")获得的路径为什么和我们项目创建的路径不一样(因为获取的是工程的部署路径)

public class ContextServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取配置文件中的上下文参数ServletContext context = getServletConfig().getServletContext();System.out.println(context.getContextPath());System.out.println("当前工程部署的路径" + context.getRealPath("/"));System.out.println(context.getRealPath("/css"));System.out.println(context.getRealPath("/jpg"));}}

上述程序执行后返回结果如下

/myfirst
当前工程部署的路径E:\eclipse-workspace\Javaweb-servlet\out\artifacts\Javaweb_servlet_war_exploded
E:\eclipse-workspace\Javaweb-servlet\out\artifacts\Javaweb_servlet_war_exploded\css
E:\eclipse-workspace\Javaweb-servlet\out\artifacts\Javaweb_servlet_war_exploded\jpg

context.getContextPath()获得工程路径,故输出/myfirst

context.getRealPath("/")获得参数所对应虚拟路径的真实路径

其中“/”表示根目录,项目工程的根目录,即http://ip:port/工程路径

那么context.getRealPath("/")也就是获得工程的真实路径,即工程部署的物理位置

自然也就是上文配置文件中的docBase值

web工程部署路径与getServletConfig().getRealPath()相关推荐

  1. 本地 Windows 如何将 Web 工程部署到远程 Windows 主机上

    文章目录 第一步:先连接远程 Windows 主机: 第二步:连接远程 Windows 主机后,把发布包复制到远程主机上并确定有关的目录 第三步:删除远程主机的数据库中的旧数据 第四步:创建新的用户和 ...

  2. Tomcat6中web项目部署路径webapps和wtpwebapps的区别

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48997761 本文出自[我是干勾鱼的博客] 这两者其实没有区别.都是项目部署路径 ...

  3. IDEA:将web工程部署到tomcat

    在项目结构中进行部署即可:

  4. MyEclipse中Maven Web项目部署路径设置

    转载于:https://www.cnblogs.com/langzichanglu/p/10336805.html

  5. web工程本地跟tomcat部署导致根路径不一致问题

    如果本地web工程部署本地tomcat后,控制器中获取的文件路径(new FileOutputStream(filePath))不会是工程路径E:\myeclipse\SSHWeb 而是tomcat部 ...

  6. eclipse 配置java路径_Java修改eclipse中web项目的server部署路径问题

    和MyEclipse不一样,在Eclipse中做的Web项目默认是不支持将项目发布到Web服务器上的,会发布到工作空间的某个目录,因此无法在外部启动Tomcat来运行Web项目,只有打开Eclipse ...

  7. java项目如何更改路径_Java修改eclipse中web项目的server部署路径问题

    和MyEclipse不一样,在Eclipse中做的Web项目默认是不支持将项目发布到Web服务器上的,会发布到工作空间的某个目录,因此无法在外部启动Tomcat来运行Web项目,只有打开Eclipse ...

  8. IntelliJ IDEA快速入门 | 第三十一篇:在IntelliJ IDEA 2020.3.3中添加Tomcat镜像并部署Web工程

    写在前面 讲完模板以后,咱们来说一下如何在IntelliJ IDEA当中去创建Java Web的工程.这里,我们主要分两种情况来讲,第一种是如何创建静态的Java Web工程,另外一种是如何创建动态的 ...

  9. 整合DL4J训练模型与Web工程

    一.前言 上一篇博客<有趣的卷积神经网络>介绍如何基于deeplearning4j对手写数字识别进行训练,对于整个训练集只训练了一次,正确率是0.9897,随着迭代次数的增加,网络模型将更 ...

最新文章

  1. 26条面试经典问答(真实工作经验)
  2. 安装 python 虚拟环境
  3. python程序员一天写多少行代码-这个工具,30分钟居然把我一天的工作给干完了!...
  4. boost::math模块实现对贝塞尔函数的零点求和的测试程序
  5. SAP Spartacus cost center Add按钮的href属性生成逻辑分析
  6. 217 - leetcode -存在重复元素 -数据结构类 先排序再操作
  7. 牛客网暑期ACM多校训练营(第四场): B. Interval Revisited(DP)
  8. Android gallery 3D效果(扩展Gallery)
  9. c语言中compar的用法,compare的用法知识整理
  10. springboot毕设项目自驾旅游网站的设计与实现gah85(java+VUE+Mybatis+Maven+Mysql)
  11. 2021多校补题(8)
  12. 【Unity】Obi插件系列(一)—— 总览、Actors与Solvers
  13. java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)和错误原因 解决方案:
  14. linux下载文件到本地
  15. UE4 如何将材质Material保存为本地图片Png
  16. chinaunix 内核源码分析精贴
  17. 电动汽车 simulink仿真模型,可进行整车动力性仿真测试(最高车速,最大爬坡,加入时间)和NEDC工况能耗测试(电耗)
  18. 2018.04华为算法工程师实习面试经历
  19. 吴恩达机器学习课后作业ex3(python实现)
  20. 基于ssh羽毛球馆管理系统mysql

热门文章

  1. 实战——CentOS 8 防火墙设置
  2. 全国计算机等级考试二级C语言知识点大全
  3. el-table中label换行,以及表头表格内容换行
  4. js的document.getElementById()不起作用的原因,显示null
  5. 后端应用健康检查的几种解决方案
  6. PostgreSQL 数据库常用语法总结
  7. exit在c语言里的作用,C语言中exit函数的使用
  8. Python exit函数
  9. Android怎么动态修改vector填充颜色?
  10. Charm-crypto的安装与使用