org.apache.tomcat.util.http.Parameters processParameters

本文介绍了一种常见的AJAX请求问题,即在URL中多加了问号导致参数解析错误的情况,并给出了正确的URL写法。
使用ajax时在action后面多加了一个?号。

var url = myajax("http://localhost:9898/getUserList.action?",
	{
	    "numsPerPage": 10,
		"pageNum": 1,
		"userId": 1
	});


最后解析成了getUserList.action?&numsPerPage=10&pageNum=1&userId=1

只需要改成var url = myajax("http://localhost:9898/getUserList.action"即可,不需要?

### 限制上传文件数量 在使用 Apache Tomcat 的文件上传功能时,可以通过 `FileUploadBase` 类的 `setFileCountMax` 方法来限制单次请求中允许上传的文件数量。该方法继承自 Apache Commons FileUpload 库,因此在使用时需要确保 Tomcat 的 `org.apache.tomcat.util.http.fileupload` 模块已正确加载。设置方式如下: ```java import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload; ServletFileUpload upload = new ServletFileUpload(); upload.setFileCountMax(10); // 限制最多上传 10 个文件 ``` 如果上传的文件数量超过设定值,则会抛出 `FileUploadBase.FileCountLimitExceededException` 异常,开发者应捕获并处理该异常以提供友好的错误提示 [^1]。 ### 限制上传文件大小 除了限制文件数量,还可以通过 `setSizeMax` 方法设置单次请求允许上传的总数据大小。例如限制总大小为 10MB: ```java upload.setSizeMax(10 * 1024 * 1024); // 限制总大小为 10MB ``` 如果上传的总数据超过该限制,会抛出 `FileUploadBase.SizeLimitExceededException` 异常。开发者应在捕获该异常后进行相应的处理,如返回错误信息或记录日志 [^1]。 ### 单个文件大小限制 在处理多文件上传时,可能还需要限制每个文件的大小。可以通过 `setFileSizeMax` 方法实现,例如限制每个文件不超过 2MB: ```java upload.setFileSizeMax(2 * 1024 * 1024); // 限制单个文件最大为 2MB ``` 如果某个文件的大小超过该限制,将抛出 `FileUploadBase.FileSizeLimitExceededException` 异常,需在代码中进行捕获和处理 [^1]。 ### 文件上传异常处理 在文件上传过程中,可能会遇到多种异常,如文件数量、总大小或单个文件大小超过限制。开发者应使用 `try-catch` 块捕获这些异常,并根据不同的异常类型返回相应的错误信息: ```java try { List<FileItem> items = upload.parseRequest(request); } catch (FileUploadBase.FileCountLimitExceededException e) { // 处理文件数量超出限制的异常 System.out.println("上传的文件数量超过限制"); } catch (FileUploadBase.SizeLimitExceededException e) { // 处理总大小超出限制的异常 System.out.println("上传的总大小超过限制"); } catch (FileUploadBase.FileSizeLimitExceededException e) { // 处理单个文件大小超出限制的异常 System.out.println("某个文件的大小超过限制"); } catch (Exception e) { // 处理其他异常 System.out.println("发生未知错误"); } ``` 通过这种方式,可以确保上传请求在超出限制时不会导致服务器崩溃,同时提供清晰的错误提示 [^1]。 ### 配置文件上传参数 除了在代码中动态设置上传限制,还可以通过 `web.xml` 文件或 Tomcat 的 `server.xml` 文件进行全局配置。例如,在 `web.xml` 中配置上传限制: ```xml <servlet> <servlet-name>uploadServlet</servlet-name> <servlet-class>com.example.UploadServlet</servlet-class> <multipart-config> <max-file-size>20848820</max-file-size> <!-- 20MB --> <max-request-size>41803020</max-request-size> <!-- 40MB --> </multipart-config> </servlet> ``` 此配置适用于基于 `@MultipartConfig` 注解的 Servlet,可限制上传的单个文件大小和总请求大小 [^1]。 ### 使用 `DiskFileItemFactory` 配置临时存储 在上传过程中,大文件通常会被存储在临时目录中。可以通过 `DiskFileItemFactory` 设置内存和磁盘存储阈值,以及临时文件的存储路径: ```java import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); // 设置内存缓存大小为 4KB factory.setRepository(new File("/tmp")); // 设置临时文件存储目录 ServletFileUpload upload = new ServletFileUpload(factory); ``` 该配置可优化文件上传性能,避免因内存不足导致上传失败 [^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值