getServletContext().getRealPath("/")的测试

本文展示了两个Java方法,用于从HttpServletRequest对象中获取服务器的真实路径。通过对比两种不同URL映射方式下路径获取的一致性。

Java代码在/Obatv/src/com/obatv/sys/web/controller/UserControl.java

关键代码:

	
        @ResponseBody
	@RequestMapping(value = "/test1.do")
	public String testPath1(HttpServletRequest req){
		String pathString = CommonInfo.realDir + CommonInfo.productImageRealDir;
		String curr = req.getServletContext().getRealPath("/");
		return pathString+"======"+curr;
	}
	
	@ResponseBody
	@RequestMapping(value = "222/test2.do")
	public String testPath2(HttpServletRequest req){
		String pathString = CommonInfo.realDir + CommonInfo.productImageRealDir;
		String curr = req.getServletContext().getRealPath("/");
		return pathString+"======"+curr;
	}


实际执行效果 一样。


版权声明:本文为博主原创文章,未经博主允许不得转载。

ing sharding settings from environment. This is shard 0/1 Using 1 parallel jobs. [icu_util.cc:192] /data/icudtl.dat not exists. [icu_util_ohos.h:56] icu data file length: 10464144 [icu_util.cc:333] InitializeIcuTimeZone in OHOS ARKWEB. Note: Google Test filter = DatashareAdapterImplTest.GetRealPath_Success:DatashareAdapterImplTest.GetRealPath_Failure:DatashareAdapterImplTest.GetFileDisplayName_Success:DatashareAdapterImplTest.GetFileDisplayName_Failure:DatashareAdapterImplTest.OpenDataShareUriForRead_Success:DatashareAdapterImplTest.OpenDataShareUriForRead_Failure_GetPath [==========] Running 6 tests from 1 test suite. [----------] Global test environment set-up. [----------] 6 tests from DatashareAdapterImplTest [ RUN ] DatashareAdapterImplTest.GetRealPath_Success [test_launcher.cc:1302] no test result for DatashareAdapterImplTest.GetRealPath_Failure [test_launcher.cc:1302] no test result for DatashareAdapterImplTest.GetFileDisplayName_Success [test_launcher.cc:1302] no test result for DatashareAdapterImplTest.GetFileDisplayName_Failure [test_launcher.cc:1302] no test result for DatashareAdapterImplTest.OpenDataShareUriForRead_Success [test_launcher.cc:1302] no test result for DatashareAdapterImplTest.OpenDataShareUriForRead_Failure_GetPath [1/6] DatashareAdapterImplTest.GetRealPath_Success (CRASHED) [2/6] DatashareAdapterImplTest.GetRealPath_Failure (SKIPPED) [3/6] DatashareAdapterImplTest.GetFileDisplayName_Success (SKIPPED) [4/6] DatashareAdapterImplTest.GetFileDisplayName_Failure (SKIPPED) [5/6] DatashareAdapterImplTest.OpenDataShareUriForRead_Success (SKIPPED) [6/6] DatashareAdapterImplTest.OpenDataShareUriForRead_Failure_GetPath (SKIPPED) 1 test crashed: DatashareAdapterImplTest.GetRealPath_Success (../../arkweb/ohos_adapter_ndk/datashare_adapter/datashare_adapter_impl_unittest.cc:94) 5 tests not run: DatashareAdapterImplTest.GetFileDisplayName_Failure (../../arkweb/ohos_adapter_ndk/datashare_adapter/datashare_adapter_impl_unittest.cc:144) DatashareAdapterImplTest.GetFileDisplayName_Success (../../arkweb/ohos_adapter_ndk/datashare_adapter/datashare_adapter_impl_unittest.cc:125) DatashareAdapterImplTest.GetRealPath_Failure (../../arkweb/ohos_adapter_ndk/datashare_adapter/datashare_adapter_impl_unittest.cc:113) DatashareAdapterImplTest.OpenDataShareUriForRead_Failure_GetPath (../../arkweb/ohos_adapter_ndk/datashare_adapter/datashare_adapter_impl_unittest.cc:179) DatashareAdapterImplTest.OpenDataShareUriForRead_Success (../../arkweb/ohos_adapter_ndk/datashare_adapter/datashare_adapter_impl_unittest.cc:156) Tests took 5 seconds.
08-30
创建Web项目,导入相关JAR包; <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> 创建并配置web.xml文件; <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>Springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 添加用于上传的jsp页面; <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <title>文件上传</title> </head> <body> <table border="1"> <tr> <td width="500" align="center">文件上传</td> </tr> <tr> <td> <form action="${pageContext.request.contextPath}/file/upload" method="post" enctype="multipart/form-data"> <input type="file" name="uploadfiles" multiple="multiple"/><br> <input type="submit" value="上传"><br> </form> </td> </tr> <c:forEach items="${msgs}" var="msg"> <tr><td align="center" colspan="2" style="color: red">${msg}</td></tr> </c:forEach> </table> </body> </html> 创建控制类用于上传文件; package com.springmvc.controller; import java.io.File; import java.io.IOException; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; @Controller @RequestMapping("/file") public class FileUploadController { @RequestMapping("/upload") public String fileUpload(ArrayList<MultipartFile> uploadfiles, HttpServletRequest request) { //定义列表msgs保存提示信息 ArrayList<String> msgs = new ArrayList<>(); if (uploadfiles.get(0).getSize() > 0) { //判断是否上传文件 for (MultipartFile file : uploadfiles) { //循环获取文件 //判断文件不为空且大小大于0 if (!file.isEmpty() & file.getSize() > 0) { //获取文件原始名称 String originalFilename = file.getOriginalFilename(); //获取服务器中的文件夹路径 String path = request.getServletContext().getRealPath("/upload/"); //设置文件保存到服务器的目标路径 String filePath = path + originalFilename; try { //保存文件内容到目标路径 file.transferTo(new File(filePath)); } catch (IOException e) { msgs.add(filePath + "保存失败"); } msgs.add(filePath +"保存成功"); } } } else msgs.add("上传文件失败"); request.setAttribute("msgs", msgs); return "fileUpload"; } } 添加配置文件; <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.springmvc.controller"/> <mvc:annotation-driven /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!--配置视图控制器,指定文件上传页面的映射路径--> <mvc:view-controller path="/file/fileupload" view-name="fileUpload"/> <mvc:view-controller path="/file/filedownload" view-name="fileDownload"/> <!--配置注解驱动--> <mvc:annotation-driven/> <!--配置文件上传解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--指定请求的编码方式--> <property name="defaultEncoding" value="UTF-8"></property> <!--指定允许上传文件的大小,此处设置最大值为1 M,单位为字节--> <property name="maxUploadSize" value="1024000"></property> </bean> </beans> 添加上传成功的消息页面。 文件下载: 创建控制器类: package com.springmvc.controller; import java.io.File; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FileUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/file") public class FileDownloadController { @RequestMapping("/download") public ResponseEntity<byte[]> FileDownload(HttpServletRequest request, String fileName) throws IOException { //获取下载文件的路径 String filepath = request.getServletContext().getRealPath("/upload/") + fileName; //创建该文件的对象 File file = new File(filepath); //将文件读取到字节数组中 byte[] bytes = FileUtils.readFileToByteArray(file); //创建HttpHeaders对象设置响应头信息 HttpHeaders headers = new HttpHeaders(); //设置浏览器以“UTF-8”编码方式显示文件名 fileName = URLEncoder.encode(fileName, "UTF-8"); //设置以下载的方式打开文件,并指定文件名称 headers.setContentDispositionFormData("attachment", fileName); //设置文件的下载方式为二进制流 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<>(bytes, headers, HttpStatus.OK); } } 添加用于上传的jsp页面; <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>文件下载</title> </head> <body> <table border="1"> <tr> <td width="350" align="center">下载列表</td> </tr> <tr> <td> <a href="${pageContext.request.contextPath}/file/download?fileName=微信图片_20250612231528.jpg"> 这是一张图片</a><br> </td> </tr> </table> </body> </html> 实验成果: 修改一下
最新发布
11-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值