Spring MVC 关于controller的字符编码问题
发布时间 - 2026-01-11 00:19:10 点击率:次在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使 controller回应相应的数据而不是去渲染某个页面。如果请求的是非英文格式的字符串,往往在客户端显示的是乱码。原因是spring的 StringHttpMessageConverter默认的字符类型是iso8895-1 ‘西欧语言’,中文等字符需要单独指定。

这里总结几种解决方案:
1.不使用@ResponseBody注解,使用HttpServeletResponse设置contentType属性
@RequestMapping(value ="/rest/create/document")
public void create(Document document, HttpServletRespone respone) {
repoonse.setContentType("text/plain;charset='utf-8'");
response.write("中文string");
}
2.返回Response Entity object,设置contentType,例:
@RequestMapping(value = "/rest/create/document") public ResponseEntity<String> create(Document document, HttpServletRespone respone) {
HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.add("Content-Type", "text/html; charset=utf-8");
Document newDocument = DocumentService.create(Document);
String json = jsonSerializer.serialize(newDocument);
return new ResponseEntity<String>(json, responseHeaders, HttpStatus.OK);
}
3.使用produces属性:
@RequestMapping(value = "/rest/create/document",produces= "text/plain;charset=UTF-8") //返回的内容类型
@ResponseBody
public String create(Document document, HttpServletRespone respone) throws UnsupportedEncodingException {
Document newDocument = DocumentService.create(Document);
return jsonSerializer.serialize(newDocument);
}
@RequestMapping
参数绑定(@RequestParam、 @RequestBody、 @RequestHeader 、 @PathVariable)
package org.springframework.web.bind.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
String[] value() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性。
1、value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2、consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring mvc 字符编码
# springmvc controller
# springmvc 编码
# 的是
# 客户端
# 都是
# 西欧
# 是一个
# 将会
# 英文
# 能让
# 几种
# 绑定
# 大家多多
# 才让
# 类中
# 而不是
# 为父
# 整型
# 以该
# 可用于
# void
# plain
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
百度浏览器如何管理插件 百度浏览器插件管理方法
javascript基本数据类型及类型检测常用方法小结
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
如何快速上传建站程序避免常见错误?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何快速搭建FTP站点实现文件共享?
如何做网站制作流程,*游戏网站怎么搭建?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
如何在云指建站中生成FTP站点?
如何用IIS7快速搭建并优化网站站点?
Laravel Fortify是什么,和Jetstream有什么关系
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Android滚轮选择时间控件使用详解
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
详解CentOS6.5 安装 MySQL5.1.71的方法
如何快速生成高效建站系统源代码?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
javascript基于原型链的继承及call和apply函数用法分析
Laravel怎么使用artisan命令缓存配置和视图
Java解压缩zip - 解压缩多个文件或文件夹实例
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel怎么实现模型属性的自动加密
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
零基础网站服务器架设实战:轻量应用与域名解析配置指南
微信小程序 scroll-view组件实现列表页实例代码
如何生成腾讯云建站专用兑换码?
如何在企业微信快速生成手机电脑官网?
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
高端建站如何打造兼具美学与转化的品牌官网?
Linux系统命令中tree命令详解
网站建设要注意的标准 促进网站用户好感度!
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Python结构化数据采集_字段抽取解析【教程】
原生JS实现图片轮播切换效果
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
bootstrap日历插件datetimepicker使用方法
Swift中swift中的switch 语句
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】

