IDEA对以war包发布的一点观察
tagret文件夹里的classes文件夹,集结了 src-java-里的com文件夹 ,然后集结resources里的所有 。 tagert里的项目名字文件夹里 放的都是 webapp里的所有文件夹
也就是凡是被标记为root文件夹的,到最后编译,都是生成在class文件夹里
request.getSession().getServletContext() 获取的是Servlet容器对象,相当于tomcat容器了.
getRealPath(“/”) 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径。
问题
那请问老师Tomcat 怎么部署才能让上传的文件在maven 项目的webapp/img目录下呢?
答
- 先用可运行项目跑起来,是可以实现上传功能的
- session.getServletContext.getRealPath("") 拿到的是运行时环境,而在idea里部署的话,运行环境不会是源代码webapp/img目录呢
- maven项目里src目录下的java,webapp和resource目录都不会参与部署,如果是通过idea部署的话,部署的位置是/target/tmall_ssm目录下呢
- 从你的截图来看,你应该采用的是tomcat独立部署方式吧。 这就对了呀,独立部署,那么获取到的路径肯定是tomcat那里的目录嘛。 想想真实环境,开发是在windows上做的,部署是在linux上做的,那么获取到的img路径,难道不应该是在linux上吗? 对嘛
额外发现
所以,一切还是最终生成的是tagert文件夹里的 项目名.文件夹,因为里面既有.class(都生成在WEB-INF里,还有lib文件夹) 又有静态文件
-
-
- 最后总结
- 最后总结
-