我遇到的jsp表单提交乱码问题

来源:互联网 发布:ubuntu14.04安装php 编辑:程序博客网 时间:2024/06/17 15:28

jsp表单以get方式提交不出现乱码,以post方式提交出现了乱码。


el.jsp文件主要代码如下:



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

del.jsp代码如下:


get方式提交时数据直接接在url地址栏之后,在del.jsp中写不写request.setCharacterEncoding("utf-8");都不会出现乱码。


但是把提交方式换成post提交后,request.getParameter("name");就出现了乱码。细思jsp表单提交的运行原理,客户端的请求某jsp文件,服务器将jsp文件以pageEncoding编码方式(用户可设定)将jsp文件转变成servlet文件,然后在转成字节码文件(用户不可设定),最后在运行字节码文件以charset设定的编码方式展现给客户端。

按照这个思路,第一步:我把请求页面el.jsp的pageEncoding设为utf-8,让容器以utf-8的编码方式将其转变为servlet文件,我去查看el_servlet.java,


因为我的java文件里的汉字不是乱码,我也没设定其他编码方式,所以容器以我设定的pageEncoding方式(utf-8)将jsp文件转换成java文件,。


至于容器将该java文件以**编码方式变成字节码文件我不管,反正最后它都会**解码然后以我设定的charset方式展现,charset就是 response.setContentType("text/html; charset=utf-8");,服务器对客户端的响应编码为utf-8。最后el.jsp运行后如下:


没问题,没乱码,但是我点提交后结果如下:

是个乱码!

第二步:我就去查看我提交的页面del.jsp,看看容器是怎么帮我转的啊(这时del.jsp中并未设定request.setCharacterEncoding("utf-8"))?我明明设定pageEncoding和Charset都是utf-8了啊,想想pageEncoding和Charset只是将del.jsp以utf转成java文件后再编译成class文件最后在变成utf-8格式,del.jsp载入到显示整个过程(utf-8)是以什么编码进去就以什么编码出来,是完整的。但是对于el.jsp表单的提交请求并没有设定以什么编码方式提交,也只有这个过程是会导致乱码问题了。因为请求的编码格式和del.jsp的编码格式不一,造成了乱码,所以在del.jsp加上request.setCharacterEncoding("utf-8"),


提交,但是还是出现乱码,我纳闷了,又去翻看del_servlet.java,这一看我笑了,


很明显嘛!我request.setCharacterEncoding("utf-8")设定的位置不对,这一句应该设定在最前面!


然后在回头看del_servlet.java


这句request.setCharacterEncoding("utf-8");的位置发生了改变,在数据初始化之前了。然后在,提交,结果如下:



阅读全文
0 0
原创粉丝点击