servlet获取后台数据乱码处理

2025-11-01 08:21:34

1、第一步:新建一个javaweb项目。

打开myeclipse file --》new--》web project 

具体操作如下图所示:

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

2、第二步:搭建servlet开发环境。

新建一个servlet UserServlet.java,index.jsp在web.xml中配置servlet

代码如下:

package com.test.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class UserServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String sex = request.getParameter("sex");

String[] bobby = request.getParameterValues("bobby");

System.out.println("性别 :"+sex);

for (int i = 1; i <= bobby.length; i++) {

System.out.println("爱好"+i+" :"+bobby[i-1]);

}

}

}

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

3、第三步:问题分析,解决思路。

1、乱码产生原因是get请求在前端处理时将中使用ISO-8859-1进行编码而java文件和jsp文件一般都是使用UTF-8编码,如下图1所示

2、确认了问题解决起来也就简单,只要使用对应的编码对其解码就可以解决此问题。

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

4、第四步:解决方案1在后台使用ISO-8859-1解码。

具体实现代码如下所示:

package com.test.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class UserServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String sex = request.getParameter("sex");

String[] bobby = request.getParameterValues("bobby");

System.out.println("性别 :"+new String(sex.getBytes("ISO-8859-1"),"utf-8"));

for (int i = 1; i <= bobby.length; i++) {

System.out.println("爱好"+i+" :"+new String(bobby[i-1].getBytes("ISO-8859-1"),"utf-8"));

}

}

}

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

5、第五步:使用post方式提交表单。

<form action="/servlet/userServlet.do" method="post">

    爱好1:<input type="text" name="bobby"><br/>

    爱好2:<input type="text" name="bobby"><br/>

    爱好3:<input type="text" name="bobby"><br/>

    爱好4:<input type="text" name="bobby"><br/>

    性别:<input type="text" name="sex"><br/>

    <input type="submit" value="提交">

    </form>

servlet获取后台数据乱码处理

servlet获取后台数据乱码处理

6、第六部:传输之前使用编码。

1、js前端编码

encodeURI 方法  编码

decodeURI 方法 解码

2、java后台编码

import java.net.URLDecoder;

import java.net.URLEncoder;

//URLEncoder.encode("乱码","UTF8");编码

//URLDecoder.decode("乱码","UTF-8")解码

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢