SpringMVC 解决中文乱码问题以及前后端Json格式数据交互的测试
1.今日遇到的报错:
跳转网页出现404原因:
1.检查project structure里面的webapp路径是否正确;
2.检查project structure里的artifaccts里的WEB-INF下是否有lib目录;
3.考虑是不是maven静态资源没有导出
form表单提交后一直无法跳转到对应的url页面:
因为配置tomcat时有写完整项目名,跳转后项目名被自动抹去,导致url不正确
2.解决客户端提交表单后响应回给客户端的数据出现中文乱码的问题
添加过滤器类filter.java

public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
System.out.println("===========");
chain.doFilter(request,response);
}
@Override
public void destroy() {
}
}
编写完过滤器类后立马到web.xml注册

<filter>
<filter-name>encoding</filter-name>
<filter-class>com.lian.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.JSON格式(重要)前后端数据交互
这里测试内容:后端传给前端json格式字符串并在前端页面打印出来
为了实现代码复用,先封装json格式的工具类

public class JsonUtils {
public static String getjson3(Object object) throws JsonProcessingException {
return getjson3(object,"yyyy-MM-dd HH:mm:ss");
}
public static String getjson3(Object object, String dateFormat) throws JsonProcessingException {
ObjectMapper mapper=new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定义日期的格式
SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
mapper.setDateFormat(sdf);
return mapper.writeValueAsString(object);
}
}
ORM实体类映射数据库方便测试

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private int age;
private String sex;
}
测试方法1,将java对象以Json字符串形式在前端页面显示

@RequestMapping(value = "/j1",
produces = {"application/json;charset=UTF-8"})
@ResponseBody//它就不会走视图解析器,直接返回字符串 public String json1() throws JsonProcessingException {
ObjectMapper mapper=new ObjectMapper();
//创建一个对象
User user=new User("秦将1号",3,"男");
String str=mapper.writeValueAsString(user);
return str;
}
测试方法2,将多个java对象包装成列表以Json字符串形式在前端页面显示

@RequestMapping(value = "/j2",
produces = {"application/json;charset=UTF-8"})
@ResponseBody//不加这个会报404,不加它会走视图解析器,而不会直接返回字符串 public String json2() throws JsonProcessingException {
// ObjectMapper mapper=new ObjectMapper();
List<User> users=new ArrayList<User>();
User user1=new User("秦将1号",3,"男");
User user2=new User("秦将2号",3,"男");
User user3=new User("秦将3号",3,"男");
User user4=new User("秦将4号",3,"男");
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
return JsonUtils.getjson3(users);
}
测试方法3,同测试方法2

@RequestMapping(value = "/j3",
produces = {"application/json;charset=UTF-8"})
@ResponseBody//不加这个会报404,它会走视图解析器,而不会直接返回字符串 public String json3() throws JsonProcessingException {
Date date=new Date();
return JsonUtils.getjson3(date,"yyyy-MM-dd HH:mm:ss");
}
测试方法4,java对象和json对象之间的转换

@RequestMapping(value = "/j4",
produces = {"application/json;charset=UTF-8"})
@ResponseBody//不加这个会报404,它会走视图解析器,而不会直接返回字符串 public String json4() throws JsonProcessingException {
// ObjectMapper mapper=new ObjectMapper();
List<User> users=new ArrayList<User>();
User user1=new User("秦将1号",3,"男");
User user2=new User("秦将2号",3,"男");
User user3=new User("秦将3号",3,"男");
User user4=new User("秦将4号",3,"男");
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4); System.out.println("=====java对象转json字符串=====");
String str1= JSON.toJSONString(users);
System.out.println(str1); String str2=JSON.toJSONString(user1);
System.out.println(str2); System.out.println("=====json字符串转java对象=====");
User jp_user1=JSON.parseObject(str2,User.class);
System.out.println(jp_user1); System.out.println("=====java对象转json对象=====");
JSONObject jsonObject= (JSONObject) JSON.toJSON(user1);
System.out.println(jsonObject.getString("name")); System.out.println("=====json对象转java对象=====");
User to_java_user=JSON.toJavaObject(jsonObject,User.class);
System.out.println(to_java_user);
return "Hello";
}
SpringMVC 解决中文乱码问题以及前后端Json格式数据交互的测试的更多相关文章
- springmvc解决中文乱码问题
1 第一种情况(get接收参数): 最近在用solr做一个搜索服务,发布给手机和pc等客户端调用,调用方式为: http://www.ganbo.search/search?q="手机& ...
- 使用AngularJS实现的前后端分离的数据交互过程
一. AngularJS简介 AngularJS是什么 AngularJS是一个开源Web应用程序框架.最初是由MISKO Hevery和Adam Abrons于2009年开发,现在是由谷歌维护. A ...
- 用springmvc的@RequestBody和@ResponseBody 接收和响应json格式数据
1.controller @Controller @RequestMapping("/rest/v1") public class WelcomeController { @Req ...
- springmvc:配置解决中文乱码的过滤器
在web.xml中配置以下内容: <!--配置解决中文乱码过滤器--> <filter> <filter-name>characterEncodingFilter& ...
- SpringMVC参数绑定学习总结【前后端数据参数传递】
目录 1. 绑定机制 2. 支持的数据类型 3. 参数请求中文乱码解决 4.自定义类型转换器 5.最后参数绑定学习小结 SpringMVC作为Controller层(等价servlet和struts中 ...
- zabbix解决中文乱码问题(没有测试成功)
zabbix解决中文乱码问题 1.在windows系统中找一个自己喜欢的字体,这里我们用:msyh.ttf 2.将字体上传至/var/www/html/zabbix/fonts目录下 [root@za ...
- Debian 6解决中文乱码
DEBIAN下中文显示 一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在. 1.挂载ISO文件包,前8个ISO包就可以(这里不在 ...
- php如何解决中文乱码问题?
为什么会出现中文乱码? 很多新手朋友学习PHP的时候,发现程序中的中文在输出的时候会出现乱码的问题,那么为什么会出现这种乱码的情况呢?一般来说,乱码的出现有2种原因,一种是由于编码(charset) ...
- MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8
来看看如何解决乱码问题: 在mysql中默认字符集是latin1, 想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置: [client] default-character-set ...
- (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
« CloudStack+XenServer详细部署方案(10):高级网络功能应用 (总结)CentOS Linux 5.x在GPT分区不能引导的解决方法 » 2013-1 11 (原创)Linux下 ...
随机推荐
- Android 音视频采集那些事
音视频采集 在整个音视频处理的过程中,位于发送端的音视频采集工作无疑是整个音视频链路的开始.在 Android 或者 IOS 上都有相关的硬件设备--Camera 和麦克风作为输入源.本章我们来分析如 ...
- 使用K8S进行蓝绿部署的简明实操指南
在之前的应用部署系列文章里,我们已经介绍过什么是蓝绿部署.如需回顾,点击下方文章链接即可重温.本文我们将会介绍如何使用 Kubernetes 实现蓝绿部署. 应用部署初探:3个主要阶段.4种常见模式 ...
- java数据类型转换有哪几种?看这篇就够了!
前言 在上一篇文章中,壹哥给大家讲解了Java中的数据类型,从此大家就知道了基本类型和引用类型,尤其是8种基本类型的使用和各自特点.但实际上数据类型的使用还有很多更深入的内容,比如java数据类型直接 ...
- 超全!Python图形界面框架PyQt5使用指南!
使用Python开发图形界面的软件其实并不多,相对于GUI界面,可能Web方式的应用更受人欢迎.但对于像我一样对其他编程语言比如C#或WPF并不熟悉的人来说,未必不是一个好的工具. 常见GUI框架 P ...
- urllib.parse的使用
urllib简介 urllib是pyhton自带的标准库用于网络请求库,无需安装,直接引用 通常用于爬虫开发,API(应用程序编程接口)数据获取和测试 urllib库的4大模块 urllib.requ ...
- 5.Web信息收集
Web信息收集 目录 Web信息收集 1.whois查询 2.服务器操作系统的识别 3.服务器加固 4.服务版本识别 5.常见组合: 6.指纹识别 7.敏感路径识别 8.历史漏洞信息收集 1.whoi ...
- 第一部分:介绍 Spdlog 日志库
什么是 Spdlog 日志库 Spdlog 是一个 C++ 的日志库,它具有高效.易用.跨平台等特点.它可以写入到控制台.文件等输出目标,支持多种日志级别.多线程安全等功能,非常适合在 C++ 项目中 ...
- 记一次在forEach中使用aynac/await中的坑
1.背景 在写一个对齐脚本时 发现下列问题 const timeList = await imageList.map( (item,index)=>{ return item.identify_ ...
- Knockin' On PHP's Door ---PHP入门必知(持续更新)
1.->.=> 和 :: 区别: :: 类中调用静态方法时用-> 类中调用属性和非静态方法=> 是键值对,比如在关联数组中用 $arr = ["name&quo ...
- 股票K线图概要——R语言
K线图是200多年前日本人发明的,后来传入了美国.K线图本来就是对当前数据的可视化显示而已,但是越来越多的人对K线图做出了痴迷的分析和解读,有众多追随者也根据K线图指导自己的具体行动,因此,K线图在实 ...