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下 ...
随机推荐
- windows 系统下 workerman 在同一个运行窗口中开启多个 websocket 服务
目录 开启多个 ws 服务失败 开启服务失败解决办法 同一个窗口中运行 开启多个 ws 服务失败 正常情况下,如果你想开启多个 websocket 服务的话 只要在一个文件中,输入 new Worke ...
- flutter widget---->FloatingActionButton
在Flutter中说起Button,floatingActionButton用的也非常的多.今天我们就来学习一下. Simple Example import 'package:flutter/mat ...
- 最新版本 Stable Diffusion 开源AI绘画工具之部署篇
目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...
- 在Mac搭建一个便捷的Markdown创作环境
前言 使用 Typora + PicGo + Gitee + Snipaste 在 Mac 搭建一个 Markdown 编辑环境. Typora 是一款简洁的 Markdown 编辑器: PicGo ...
- l洛谷第二题
题目描述 给定一个 n\times nn×n 的正方形棋盘,几位玩家在上面玩三子棋. 三子棋的规则是每位玩家轮流写下一个字母,同一名玩家的字母相同.当有一名玩家在行.列或者斜线上连续组成了 33 个自 ...
- idea 热部署插件JRebel
idea 热部署插件JRebel 当开始开发web项目的时候,需要频繁的修改web页面,此时如果频繁的重启变得很麻烦,因此,可以在idea中集成JRebel插件,改动代码之后不需要重新启动应用程序 ...
- python入门教程之十九cgi编程
什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...
- [Linux]ln:软链接与硬链接
1 硬链接与软链接的[语法] 软链接:ln -s 源文件 目标文件 硬链接:ln 源文件 目标文件 [-s : symbolic,符号/代号] 2 软链接/硬链接的[比喻] / (编辑)同步性 [ro ...
- 0001 嵌入式开发带你从小白到大佬系列之——Linux开发环境搭建—Windows-VMware-Ubuntu环境配置
如文章标题,我们安装的Linux开发环境是:Windows-VMware-Ubuntu环境 配置,即在windows系统下安装VMware虚拟机,之后在VMware中配置安装Linux系统的常用发行版 ...
- 【牛客小白月赛70】A-F题解【小d和超级泡泡堂】【小d和孤独的区间】【小d的博弈】【小d和送外卖】
比赛传送门:https://ac.nowcoder.com/acm/contest/53366 难度适中. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式 ...