使用HttpServletRequest进行参数命名的转换

当调用第三方接口后,发现发送给对方的参数名称为"javaWeb"的驼峰命名形式的,但对方接收时却需要使用"java_web"如此形式的命名,该如何进行转换呢。

HttpServletRequest

HttpServletRequest对象代表的是客户端发送过来的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都是封装在这个对象中的,通过这个对象提供的方法,就可以获得客户端请求的所有信息。这里只介绍一下需要用到的一个方法。

获得客户机请求参数

getParameter(String name)
根据name获取请求参数。

使用上面的方法对参数进行名称的更改,再重新set回本身所在的param中,即可完成命名的更改。

	HttpServletRequest request;
	String java_web = request.getParameter(javaWeb);
	Param param = new Param();
	param.setJavaWeb(java_web);
	return param;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在前端修改传给 Java 后端的图片名称,您可以使用 `FormData` 对象来发送文件和其对应的名称服务器端。以下是一种可能的实现方式: HTML 代码: ```html <input type="file" id="file-input" multiple> <input type="text" id="filename-input" placeholder="请输入文件名"> <button id="upload-btn">上传文件</button> ``` JavaScript 代码: ```javascript const fileInput = document.getElementById('file-input'); const filenameInput = document.getElementById('filename-input'); const uploadBtn = document.getElementById('upload-btn'); uploadBtn.addEventListener('click', () => { const files = fileInput.files; const filenames = filenameInput.value.split(','); if (files.length !== filenames.length) { alert('请选择相应数量的文件名'); return; } const formData = new FormData(); for (let i = 0; i < files.length; i++) { formData.append('files[]', files[i], filenames[i]); } fetch('/upload', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => { console.error(error); }); }); ``` 在这个例子中,我们使用 `FormData` 对象将文件和文件名打包到一个表单数据对象中,并将其发送到服务器端。需要注意的是,这种方式仍然存在安全风险,并且容易被攻击者利用。因此,最好的做法是在服务器端生成文件名,并将其返回给客户端。客户端可以在上传文件时将文件名传递给服务器,但是它不应该允许用户在前端修改文件名。 在 Java 后端中,您可以使用 Apache 的 Commons FileUpload 库来解析上传的文件和文件名。以下是一种可能的实现方式: ```java import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.List; public class UploadServlet extends HttpServlet { private static final String UPLOAD_DIRECTORY = "uploads"; private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MB private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检查请求是否为 multipart/form-data if (!ServletFileUpload.isMultipartContent(request)) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "请求不是 multipart/form-data 类型"); return; } // 配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(MEMORY_THRESHOLD); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload uploader = new ServletFileUpload(factory); uploader.setFileSizeMax(MAX_FILE_SIZE); uploader.setSizeMax(MAX_REQUEST_SIZE); // 解析上传的文件 try { List<FileItem> items = uploader.parseRequest(request); for (FileItem item : items) { // 如果当前项是一个上传的文件,则保存到磁盘上 if (!item.isFormField()) { String fileName = item.getName(); // 在这里可以将文件名进行修改 File uploadDir = new File(getServletContext().getRealPath("") + File.separator + UPLOAD_DIRECTORY); if (!uploadDir.exists()) { uploadDir.mkdir(); } File uploadFile = new File(uploadDir + File.separator + fileName); item.write(uploadFile); } } // 返回上传成功的信息 response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write("{\"success\": true}"); } catch (Exception e) { // 返回上传失败的信息 response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write("{\"success\": false}"); } } } ``` 在这个例子中,我们使用 Commons FileUpload 库来解析上传的文件和文件名。当上传一个文件时,我们可以在 `FileItem` 对象上使用 `getName()` 方法来获取文件名,并在这里修改文件名。在这个例子中,我们将上传的文件保存到一个名为 `uploads` 的文件夹中。需要注意的是,这种方式仍然存在安全风险,并且容易被攻击者利用。因此,最好的做法是在服务器端生成文件名,并将其返回给客户端。客户端可以在上传文件时将文件名传递给服务器,但是它不应该允许用户在前端修改文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值