Processing math: 0%

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

本文涉及的产品
转发路由器TR,750小时连接 100GB跨地域
简介: 今天编写了一个上传文件的代码,用到Apache的commons-fileupload组件,所有的Servlet都用Filter处理了,request和response的编码都是UTF-8。

今天编写了一个上传文件的代码,用到Apache的commons-fileupload组件,所有的Servlet都用Filter处理了,request和response的编码都是UTF-8。

 

JSP的相关代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <%@ page contentType="text/html;charset=UTF-8"%> …… <meta http-equiv="content-type" content="text/html; charset=UTF-8">

当前台的JSP将文件提交给后台的Servlet时,根据设置的JSP参数和Filter,从理论上来说是不会出现表单的文本域乱码的,可是测试结果出现了乱码。

 

在网上搜了很多帖子,结果各种说法都有,经过尝试,发现了问题的本质:

Servlet的相关代码如下:

// 解析request对象中的表单项 List<FileItem> formItems = fileUpload.parseRequest(request); // list中是FileItem对象 // 提取文本 for (int i = 0; i < formItems.size(); i++) { FileItem item = formItems.get(i); if (item.isFormField()) { // 表单文本项 System.out.println("FildName:"+item.getFieldName()); System.out.println("Value:"+item.getString()+"/t>"+item.getString("UTF-8")); } }

commons-fileupload组件对form提交的文本域进行了处理,如果需要取出其中的文本域值,有两个重载的方法,分别是item.getString()和item.getString(字符编码集);

 

如果发现这一点,commons-fileupload 上传文件乱码问题就很easy了!

 

 

相关文章
|
存储 Web App开发 监控
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
我们以前使用过的对hbase和hdfs进行健康检查,及剩余hdfs容量告警,简单易用 1.针对hadoop2的脚本: #/bin/bashbin=`dirname 0`bin=`cd bin;pwd`STATE_OK=...
1060 0
|
Web App开发 前端开发
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
 Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭;    如果知道实际连接服务器的并发客户数没有超过服务器的承载量,看下有没有网络流量异常。
863 0
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
NoSuchObjectException(message:There is no database named cloudera_manager_metastore_canary_test_db_hive_hivemetastore_df61080e04cd7eb36c4336f71b5a8bc4) at org.
1084 0
|
Web App开发 前端开发 数据库
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
做大做强事实表,做小做弱维表; 分布式模式-维度建模新原则  (1)以值代键:针对键值唯一的维表,除非必要,否则不引入维表,如IP地址维表,采用IP作为维表的主键,事实表中存储IP值;      (2)合理分表:传统关系型数据仓库存在多表整合的冲动,如上图Event事实表,各种Acount Ind,Finance Ind等,用来扩展表的通用性,试图把所有的数据都存储到一张表 中。
789 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Spark Streaming 的一些问题,做选型前关注这些问题可以有效的降低使用风险。 checkpoint checkpoint 是个很好的恢复机制。
941 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
关于reduce边join,其最重要的是使用MultipleInputs.addInputPath这个api对不同的表使用不同的Map,然后在每个Map里做一下该表的标识,最后到了Reduce端再根据标识区分对应的表! ...
791 0
|
Web App开发 前端开发 大数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
打算对新建的hadoop集群使用管理工具,列了以下主要的不同点: 主要的不同点 apache Ambari ClouderaManager Express(免费版) 配置版本控制和历史记录 支...
885 0