jsp开发时关于动态web项目的路径问题(本地路径和tomcat路径的关系)

在访问web目录下资源时,request.getServletContext().getRealPath()经常被使用,该代码作用是获取项目的绝对路径,例如

D:\demo\JAVA EE\Spring MVC\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Fortis\imgProduct

至于其和本地路径

D:\demo\JAVA EE\Spring MVC\Fortis\WebContent

的关系和两者之间的实际应用,下面会举例解释:

tomcat服务器启动时,项目会被加载到tomcat的项目路径下,此时项目的资源获取在项目路径而不是初始存放的本地路径,且每次tomcat部署时会清空并且重新上传项目数据


例如上传图片时候

//图片上传并显示
		@RequestMapping("/updateimg2")
		@ResponseBody
		public Map<String, Object> updateimg2(MultipartFile file,HttpServletRequest request) throws IOException {
			Map<String, Object> map=new HashMap<>();
			//获取文件要上传的路径
			String realpath=request.getServletContext().getRealPath("/imgProduct/");//tomcat部署路径
			String pathname="D:\\demo/JAVA EE/Spring MVC/Fortis/WebContent/imgProduct";
			//originalName:图片原始名字  uuid:随机序号(防止相同图片名字) imgname:存放在images文件夹的图片名字
			
			String uuid = UUID.randomUUID().toString().replace("-", "");
			String imgName=uuid+".jpg";
			
			String targetpath=realpath+"/"+imgName;//tomcat路径+文件名
			String sqlPath=pathname+"/"+imgName;
			File dest=new File(sqlPath);
			File targetfile=new File(targetpath);

			file.transferTo(dest);
			Files.copy(dest.toPath(), targetfile.toPath());//复制到tomcat目录(tomcat目录每次会刷新)
			System.out.println(realpath);
			map.put("code", 0);//判断上传是否成功
			map.put("imagename", imgName);
			return map;
		}

重点是这句代码:

Files.copy(dest.toPath(), targetfile.toPath());//复制到tomcat目录(tomcat目录每次会刷新)

如果没有这行代码,上传的图片不会在页面显示,除非重新部署tomcat

我们可以看一下回显的html代码

 注意,此时src下目录是项目目录,如果程序中只将图片放入本地D:\demo\JAVA EE\Spring MVC\Fortis\WebContent,项目是读取不到的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值