SpringMVC出现中文乱码的情况及怎么解决
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"SpringMVC出现中文乱码的情况及怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringMVC出现中文乱码的情况及怎么解决"
千家信息网最后更新 2025年11月13日SpringMVC出现中文乱码的情况及怎么解决使用自己写的过滤器
使用SpringMVC提供的过滤器
这篇文章主要介绍"SpringMVC出现中文乱码的情况及怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringMVC出现中文乱码的情况及怎么解决"文章能帮助大家解决问题。
背景
举个例子,出现中文乱码的例子:提交表单的时候。
表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %> Title 业务控制类
package controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class controllerDemo02 { @RequestMapping("/c02/t1") public String test1(String name, Model model){ System.out.println(name); model.addAttribute("message",name); return "test"; }}解决方案
使用自己写的过滤器
自定义一个Filter过滤器,去过滤乱码
package Filter;import javax.servlet.*;import java.io.IOException;public class EncodingFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } public void destroy() { }}在web.xml中配置这个过滤器
EncodingFilter Filter.EncodingFilter EncodingFilter /* 使用SpringMVC提供的过滤器
直接在web.xml中配置(固定的)
encoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encoding /* 如果上面两种方法还实现不了,在试试以下这个方法,大神编写的
package Filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Map;public class GenericEncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //处理response的字符编码 HttpServletResponse myResponse=(HttpServletResponse) response; myResponse.setContentType("text/html;charset=UTF-8"); // 转型为与协议相关对象 HttpServletRequest httpServletRequest = (HttpServletRequest) request; // 对request包装增强 HttpServletRequest myrequest = new MyRequest(httpServletRequest); chain.doFilter(myrequest, response); } public void init(FilterConfig filterConfig) throws ServletException { }}//自定义request对象,HttpServletRequest的包装类class MyRequest extends HttpServletRequestWrapper { private HttpServletRequest request; //是否编码的标记 private boolean hasEncode; //定义一个可以传入HttpServletRequest对象的构造函数,以便对其进行装饰 public MyRequest(HttpServletRequest request) { super(request);// super必须写 this.request = request; } // 对需要增强方法 进行覆盖 public Map getParameterMap() { // 先获得请求方式 String method = request.getMethod(); if (method.equalsIgnoreCase("post")) { // post请求 try { // 处理post乱码 request.setCharacterEncoding("utf-8"); return request.getParameterMap(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } else if (method.equalsIgnoreCase("get")) { // get请求 Map parameterMap = request.getParameterMap(); if (!hasEncode) { // 确保get手动编码逻辑只运行一次 for (String parameterName : parameterMap.keySet()) { String[] values = parameterMap.get(parameterName); if (values != null) { for (int i = 0; i < values.length; i++) { try { // 处理get乱码 values[i] = new String(values[i] .getBytes("ISO-8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } } hasEncode = true; } return parameterMap; } return super.getParameterMap(); } //取一个值 public String getParameter(String name) { Map parameterMap = getParameterMap(); String[] values = parameterMap.get(name); if (values == null) { return null; } return values[0]; // 取回参数的第一个值 } //取所有值 public String[] getParameterValues(String name) { Map parameterMap = getParameterMap(); String[] values = parameterMap.get(name); return values; }} 关于"SpringMVC出现中文乱码的情况及怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
乱码
utf-8
中文
方法
过滤器
情况
对象
知识
编码
处理
例子
行业
表单
包装
配置
不同
实用
业务
内容
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
JDK软件开发怎么下载
定制软件开发工程师待遇
互联网软件开发累不累
祖龙服务器ip
数据库远程方关闭传输流
mtpp服务器
网络安全防控倡议书
K210 软件开发
广西电子软件开发条件
服务器的组成部分
广州市恩惠互联网科技有限公司
腾讯服务器安装在哪里
魔兽怀旧服服务器之间联网
求生之路rpg服务器人物源码
金蝶提示网络加密服务器
台湾网络安全最新新闻
体彩app软件开发
数据库中关系型的概念
数据库学生成绩管理系统源码
软件开发蔡卓冰
JDK软件开发怎么下载
发送无效参数给服务器
软件开发第三章
县区网络安全宣传周通知
南京瑞诺软件开发有限公司
数据库xdriver
石嘴山市网络安全平台
服务器带外管理有哪些功能
玉山县飞驰网络技术有限公司
软件开发的角色描述