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下 ...
随机推荐
- 2021年9月学科能力综合测试(TACA)试题解答 Mathemaitca练习
各个都是人形计算器???? 目录 试题地址 1 签到 2 3 签到 4 5 6 7 8 9 10 11 你让我猜我肯定这么猜 12 13 试题地址 http://www.mxqe.com/gzsnj/ ...
- 机器学习基础04DAY
scikit-learn数据集 我们将介绍sklearn中的数据集类,模块包括用于加载数据集的实用程序,包括加载和获取流行参考数据集的方法.它还具有一些人工数据生成器. sklearn.dataset ...
- ArcGIS JS API加载带参数的rest服务参数被截掉问题处理
我们在做一些项目的时候,会对ArcGIS的图层服务进行转发,增加一些权限参数以保证数据访问的安全, 但使用ArcGIS JS API加载的时候,对于rest服务?后增加的参数会被截掉. 为解决这个问题 ...
- Windows 下无法使用 C++11 标准 thread 类
问题描述 最近需要在 windows 平台使用 C++ 多线程编程,编译时提示错误 thread is not a member of std, or you maybe forget '#inclu ...
- Solon2 的通讯服务线程配置
Solon 框架,关于通讯服务的所有配置 #服务端口(默认为8080) server.port: 8080 #服务主机(ip) server.host: "0.0.0.0" #服务 ...
- 被吐槽 GitHub仓 库太大,直接 600M 瘦身到 6M,这下舒服了
大家好,我是小富- 前言 忙里偷闲学习了点技术写了点demo代码,打算提交到我那 2000Star 的Github仓库上,居然发现有5个Issues,最近的一条日期已经是2022/8/1了,以前我还真 ...
- day104:MoFang:个人中心页面&flask-admin&基于faker生成仿真数据
目录 BUG:登陆跳转并解决页面卡顿现象 1.前端显示个人中心页面 2.flask-Admin构建和配置后台运营站点管理用户信息 3.基于Faker生成仿真测试数据 BUG:登陆跳转并解决页面卡顿现象 ...
- 基于Containerd容器引擎和kubeadm工具部署K8sv1.26.3
前文我了解了基于ubuntu2204部署containerd容器引擎以及containerd客户端工具的部署和使用相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1 ...
- 【Ubuntu】 Perf工具的使用
一.perf工具的安装 sudo apt-get install linux-tools-common sudo apt-get install linux-tools-"$(uname - ...
- 【LeetCode动态规划#13】买卖股票含冷冻期(状态众多,比较繁琐)、含手续费
最佳买卖股票时机含冷冻期 力扣题目链接(opens new window) 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 . 设计一个算法计算出最大利润.在满足以下约束条件下,你可以 ...