从form表单提交信息到一个JSP页面或者一个Servlet进行处理的时候,提交的中文信息若不加处理的话就会显示乱码,如一串???。现在通过一个例子来进行总结如下:
写一个用户信息提交页面,通过这个页面向一个JSP页面或者一个servlet提交用户信息,代码如下:
<%@ page language="java" contentType="text/html; charset=gbk"%>
<html>
<head>
<title>表?提交</title>
</head>
<body>
<form action="deal.jsp" method="post">
用?名:<input type="text" name="username"><br>
密 ?:<input type="password" name="password"><br>
? 好:<input type="radio" name="love" value="??">??
<input type="radio" name="love" value="音?">音?<br>
<input type="submit" value="提交">
</form>
</body>
</html>
现在写deal处理页面,代码如下:
<%@ page language="java" contentType="text/html; charset=gbk"%>
<html>
<head>
<title>?示用?信息</title>
</head>
s( <body>
<%
//request.setCharacterEncoding("gb2312");
String username = request.getParameter("username");
//String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");
String password = request.getParameter("password");
//String love = new String(request.getParameter("love").getBytes("iso-8859-1"),"gbk");
String love = request.getParameter("love");
%>
<%= username %>?好,?的密?是:<%= password %>,?的?好是:<%= love %>!
</body>
</html>
从前面的信息提交页面提交来的信息包含中文,这时就会出现乱码。如:
??????您好,你的密码是:1234569,您的爱好是:????!
现在,把第8行的注释符号去掉,重新执行页面(请确保web服务器会自动加载更改后的页面,否则请重新启动web服务器),这时可以看到正确的中文信息了,如:
王中玉您好,你的密码是:9856322,您的爱好是:音乐!
也可以使用另外一种方法进行处理,把deal.jsp的第8行注释掉,然后把第9行、第13行也注释掉,去掉第10行和第12行的注释符号,保存好重新执行页面(方法同上),同样会显示正常的信息。
下面通过前面的信息提交页面向一个servlet提交信息,然后对其中的中文乱码进行处理。写一个servlet程序(formdeal.java),如下:
package org.wzhongyu;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class formdeal extends HttpServlet {
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//response.setContentType("text/html; charset=gbk");
PrintWriter out = response.getWriter();
//request.setCharacterEncoding("gbk");
String username = request.getParameter("username");
String password = request.getParameter("password");
String love = request.getParameter("love");
out.print("?的用?名:" + username + "<br>"); //
out.print("?的密?:" + password + "<br>"); //
out.print("?的?好:" + love); //
}
public void init() throws ServletException {
// Put your code here
}
}
重新部署并执行页面,同样看到显示的中文信息是乱码。现在把第23行的注释符去掉,重新执行会看到下面的信息,提交过来的中文信息是乱码:
您的用户名:??????
您的密码:123465
您的爱好:????
把第25行的注释符也去掉,重新执行,可以看到可以显示正常的信息了,如下:
您的用户名:王中玉
您的密码:5632215
您的爱好:音乐
如果只去掉第25行的注释,执行程序则会显示下面的信息:
?????????
?????123456
???????
由此可见,这个两个都不可以忽略掉,也可以从下面的方式验证必须写上两个,把formdeal.java里的第29,30,31行的中文换成英文,同样注释掉第23行,而不要注释掉第25行,执行后显示的信息如下:
username???
password65462458
love??
这是由于没有设置servlet响应的页面的字符编码造成的。
在servlet里也可以这样进行处理,把第25行注释掉,而不要注释第23行,把第26行和第28行分别改为如下代码:
String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");
String love = new String(request.getParameter("love").getByte"iso-8859-1"),"gbk");
这样也可以正常显示中文信息。
分享到:
相关推荐
servlet与jsp中文乱码处理,详细介绍多种乱码处理方法,包括使用过滤器的方法
解决jsp+servlet开发中的中文乱码问题
Jsp和Servlet中文乱码问题
彻底解决Servlet及jsp解决中文乱码问题
jsp传参 servlet接收中文乱码问题的解决方法.docx
jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析
Servlet + Tomcat 中文乱码的解决方法,浏览器把Unicode字符转换为GBK字符,这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了
讲述javaweb开发中的jsp乱码问题 get、post的区别 http协议的图解
jsp和servlet操作mysql中文乱码问题的解决办法.docx
配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记和; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的Server.xml文件配置...
jsp+servlet+mysql乱码解决的 累积各路方法 最终终成正果
乱码总结,其中包括java,servlet,jsp,struts2,等,属个人总结,仅提供参考
JSP,Servlet,Struts2,struts1,数据库乱码处理
该文档提出了解决jsp开发中常见的汉字编码乱码问题的解决方案,值得参考。
jsp+servlet实现CRUD功能,ajax验证用户名,退出系统,数据库密码加密,过滤器解决中文乱码,实现分页功能,实现导出Excel等等功能。页面不是很美观、、、、
JSP Servlet 汉字编码问题 乱码解决方法
利用jsp+servlet实现的一个网上书城web应用,数据库使用的是MySQL,具体的处理涉及到:中文乱码的处理,购物车,订单管理,用户账户管理,商品搜索,高级搜索,登录/注册,各种系统验证。里面包含了系统的一些设计...
下面小编就为大家带来一篇jsp传参 servlet接收中文乱码问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
彻底解决servlet中文乱码问题,对于gbk、utf-8、iso-8859-1之间的选择,做了详细的讲解!
对于编写jsp与servlet中出现中文乱码的问题作了深入的解释