从form表单提交信息到Servlet JSP页面进行处理的时候,提交的中文信息若不加处理的话就会显示乱码,如一串???。现在通过一个例子来进行总结如下:
写一个用户信息提交页面,通过这个页面向Servlet JSP页面提交用户信息,代码如下:
成都创新互联公司专注于企业营销型网站、网站重做改版、虞城网站定制设计、自适应品牌网站建设、H5网站设计、商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为虞城等各大城市提供网站开发制作服务。
- <%@ page language="java" contentType="text/html; charset=gbk"%>
表单提交 - 用户名: type="text" name="username">
- 密 码: type="password" name="password">
- 爱 好: type="radio" name="love" value="运动">运动
- type="radio" name="love" value="音乐">音乐
- type="submit" value="提交">
现在写deal处理页面,代码如下:
- <%@ page language="java" contentType="text/html; charset=gbk"%>
显示用户信息 - <%
- //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 %>!
从前面的信息提交页面提交来的信息包含中文,这时就会出现乱码。如:
??????您好,你的密码是: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 + "
"); //- out.print("您的密码:" + password + "
"); //- out.print("您的爱好:" + love); //
- }
- public void init() throws ServletException {
- // Put your code here
- }
- }
该servlet的部署描述文件(web.xml)如下:
- version="1.0" encoding="UTF-8"?>
version="2.5" - xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
This is the description of my J2EE component This is the display name of my J2EE component formdeal org.wzhongyu.formdeal formdeal /servlet/formdeal
把信息提交页面的第7行改为:
重新部署并执行页面,同样看到显示的中文信息是乱码。现在把第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").getBytes("iso-8859-1"),"gbk");
以上是Servlet JSP页面乱码修改方法,这样也可以正常显示中文信息。
【编辑推荐】
网页名称:解决Servlet JSP页面乱码问题
本文地址:http://www.csdahua.cn/qtweb/news4/484554.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网