开发者社区> 落雨_> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

java web 中文乱码问题,上传组件传参乱码解决

简介: 1 response.setHeader("Content-type", "text/html;charset=UTF-8");//设置浏览器以什么编码显示数据,注意分号 response.setCharacterEncoding("UTF-8");2 Java中文使用Unicode编码。
+关注继续查看

1 response.setHeader("Content-type", "text/html;charset=UTF-8");//设置浏
览器以什么编码显示数据,注意分号
 response.setCharacterEncoding("UTF-8");

Java中文使用Unicode编码。在Cookie中使用Unicode字符时需要对Unicode字符进行编
码,否则会乱码。
编码使用java.net.URLEnoder类的encode(String str,String encoding)方法。
解码使用java.net.URLDecoder类的decode(String str,String encoding)方法。


看如下代码:
List<FileItem> list =upload.parseRequest(request);

Iterator<FileItem> it = list.iterator();
String username=null;
String password=null;
while (it.hasNext()) {
 FileItem item = (FileItem) it.next();// 每一个item就代表一个表单输入项
       /*isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,
 如果是普通表单字段则返回true,否则返回false。
 */
 if (item.isFormField()) {
  String name = item.getFieldName();// input的名称
  String value = item.getString();// input的值
  if(item.getFieldName().equals("username")){
  username=new String(item.getString().getBytes("iso-8859-1"),"utf-8"); //注意这里的username不能直接等于item.getString()会乱码的 因为文件上传组件的表单有个enctype="multipart/form-data"
 }
 if(item.getFieldName().equals("password")){
 password=new String(item.getString().getBytes("iso-8859-1"),"utf-8");//这里和前面username一样
 }
 } 
4 URL传中文参数 和 表单传中文参数
后者,如果是POST方法 则 只需在服务端写上request.setCharactorEncodeing("utf-8");即可(看JAVAWEB课件第三章是这么写的,不知道是不是仅仅如此就可以了)
前者,需要对URL进行两次编码 如果是js则 encodeURI(encodeURI())即可 如果是服务器端  java.net.URLEncoder.encode()方法吧
URL传中文参数 在 xmlHttpRequest.open()中,如果是GET方法,那么需要编辑,如果是POST好像不用编码吧,但我看课件有这么说的。

/*发送包含用户输入信息的请求体
encodeURIComponent() 函数可把字符串作为URI 组件进行编码。保证各种特殊字
符能被正确发送。
*/
xmlHttp.send("name=" + encodeURIComponent(name)+ "&value=" +
encodeURIComponent(value));

可能POST还需要编码,唉!

 

1  DBConnection.class.getResourceAsStream("Conn.properties")

地址怎么表示的呢? 是当前目录 还是什么的,为什么兰冬跑不出来。
2  牢记 存入图片需要开户事务,并需要提交 才可以。先牢记吧。
3   图片地址指向一个servlet,servlet转向图片,则原页面可以显示图片。

4 <script type="text/javascript">

 var xmlHttp; //声明XMLHttpRequest对象
 
 /*创建XMLHttpRequest对象*/
 function createXMLHttpRequest() {
  if (window.ActiveXObject) { //IE浏览器
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } else if (window.XMLHttpRequest) { //非IE浏览器 
   xmlHttp = new XMLHttpRequest();
  }

  if (!(xmlHttp)) { //异常,创建对象失败
   window.alert("创建XMLHttpRequest异常!");
  }
 }
 
 /*输出验证结果*/
 function validateResult() { 
  //alert(xmlHttp.readyState); //输出状态码
  if (xmlHttp.readyState == 4) {
    //alert(xmlHttp.status); //输出响应代码
    if (xmlHttp.status == 200) {
    if (xmlHttp.responseText == "error") {
     alert("用户名已经存在!");
    }
    }
  }
 }
 
 /*执行Ajax验证*/
 function userNameValidate() { 
  
  createXMLHttpRequest(); //创建XMLHttpRequest对象
   
  var username = document.getElementById("username").value;
  
  xmlHttp.open("post", "RegisterServlet.servlet", true);//初始化XMLHttpRequest对象

  xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//采用POST提交方式时要加上这句

  xmlHttp.onreadystatechange = validateResult; //设置回调函数
  
  xmlHttp.send("username="+username); //发送请求
 }

 注意ajax用post和get方式不一样 在于第三个函数里的 setRequestHeader和 传参的方式不一样send()里面写参数


List<FileItem> list =upload.parseRequest(request);

   Iterator<FileItem> it = list.iterator();
            String username=null;
            String password=null;
   while (it.hasNext()) {
    FileItem item = (FileItem) it.next();// 每一个item就代表一个表单输入项
                /*isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,
    如果是普通表单字段则返回true,否则返回false。
    */
    if (item.isFormField()) {
     String name = item.getFieldName();// input的名称
     String value = item.getString();// input的值
     if(item.getFieldName().equals("username")){
     username=new String(item.getString().getBytes("iso-8859-1"),"utf-8"); //注意这里的username不能直接等于item.getString()会乱码的 因为文件上传组件的表单有个enctype="multipart/form-data"
     
     }
     if(item.getFieldName().equals("password")){
      password=new String(item.getString().getBytes("iso-8859-1"),"utf-8");//这里和前面username一样
     }
    }

    
6
response.setContentType("image/jpeg"); 图片输出时设置

document.getElementById("").style.display="block";可以但不能写成document.getElementById("").style="display:block"因为style是个样式对象,但是在火狐里就可以 悲催了。。

AJAX

1
/*执行Ajax验证*/
 function userNameValidate() { 
  
  createXMLHttpRequest(); //创建XMLHttpRequest对象
   
  var username = document.getElementById("username").value;
  
  xmlHttp.open("post", "RegisterServlet.servlet", true);//初始化XMLHttpRequest对象

  xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//采用POST提交方式时要加上这句

  xmlHttp.onreadystatechange = validateResult; //设置回调函数
  
  xmlHttp.send("username="+username); //发送请求
 }
注意POST方法提交时,需要加上xmlHttp.setRequestHeader();方法



转自 csdn http://blog.csdn.net/frona_lee/article/details/7939520


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java实现任务调度FIFO队列策略,LinkedBlockingDeque使用(附代码) | 实用代码架构
Java实现任务调度FIFO队列策略,LinkedBlockingDeque使用(附代码) | 实用代码架构
57 0
Java 实现图片裁剪(附代码) | Java工具类
Java 实现图片裁剪(附代码) | Java工具类
183 0
Java 实现音频添加自定义时长静音(附代码) | Java工具类
Java 实现音频添加自定义时长静音(附代码) | Java工具类
26 0
Java - 源码之 Arrays 内部排序 TimSort 实现
Java - 源码之 Arrays 内部排序 TimSort 实现
53 0
Java项目-基于SSM实现律师事务所管理平台
随着时代的发展,中国的法治越来越健全,人们发生经济纠纷时更愿意通过法律渠道来解决问题和纠纷,随着这样需求的增加,越来越多的专业律师事务所在全国各地成立。本系统的主要作用就是为律师事务所提供一个信息综合管理平台,用户可以通过我们的这个平台来查询历史案件,在线咨询我们事务所的律师,如果我们的律师接了客户的单子,可以通过平台来进行查询案件执行情况等。      系统主要分为三个角色,一个普通用户,可以通过注册后登陆系统的前端,查看相关信息并实现在线咨询,二是管理员用户,可以登陆后台进行相关信息的管理,主要实现的功能有:首页轮播图管理、事务所新闻管理、客户管理、历史案件管理、律师管理、个人信息维护等
23 0
[自己做个游戏服务器三]你帮我为服务器选择一种加密算法,Java实现各种加解密算法
毕业好多年了,虽然大学专业学的是信息安全,在大学的时候学过各种加密算法,但是毕业后也没有从事安全行业,一直在做游戏,做web开发,在工作中使用加解密的机会还真不多,但是加解密确实也一直在身边,比如我们游戏通信协议不可避免的对数据进行加密,要不然的话,随便解包有点危险,刷协议骚扰服务器。今天就来聊下常用的加密算法,接下来的服务器也要选择一种加密算法,你帮我选一种?
32 0
Java Semaphore实现高并发场景下的流量控制(附源码) | 实用代码架构
Java Semaphore实现高并发场景下的流量控制(附源码) | 实用代码架构
57 0
+关注
落雨_
http://js-dev.cn
813
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载