SpringMVC出现中文乱码的情况及怎么解决
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍"SpringMVC出现中文乱码的情况及怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringMVC出现中文乱码的情况及怎么解决"
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
关于抓网络安全讲话
软件开发客观考核
计算机网络技术书籍一级类目代码
信息网络安全使用承诺书
库尔勒存储服务器维保
软件开发中UI设计
u1服务器
股市数据量化分析软件开发
网络安全最早出现在
我的世界服务器密钥
网络安全事件分级分类指南
苏州新品联想服务器安装
sap数据库取字段长度
订制app软件开发湖州
数据库是什么选择题
网页无法连接数据库怎么办
中医药和网络技术知乎
服务器桌面安装
2022成都软件开发公司排名
网络安全管理中有配置管理
如何查找行业数据库
数据库互联网公司排名
政府维护网络安全的
lsql2005连不上服务器
怎么自己搭建云服务器
好用的数据库建模工具
舟山企业网络安全准入控制价格
数据库基础与编程
网吧电脑加装服务器多少钱
医保软件查询提示数据库失败