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格式数据交互的测试的更多相关文章

  1. springmvc解决中文乱码问题

    1 第一种情况(get接收参数): 最近在用solr做一个搜索服务,发布给手机和pc等客户端调用,调用方式为:   http://www.ganbo.search/search?q="手机& ...

  2. 使用AngularJS实现的前后端分离的数据交互过程

    一. AngularJS简介 AngularJS是什么 AngularJS是一个开源Web应用程序框架.最初是由MISKO Hevery和Adam Abrons于2009年开发,现在是由谷歌维护. A ...

  3. 用springmvc的@RequestBody和@ResponseBody 接收和响应json格式数据

    1.controller @Controller @RequestMapping("/rest/v1") public class WelcomeController { @Req ...

  4. springmvc:配置解决中文乱码的过滤器

    在web.xml中配置以下内容: <!--配置解决中文乱码过滤器--> <filter> <filter-name>characterEncodingFilter& ...

  5. SpringMVC参数绑定学习总结【前后端数据参数传递】

    目录 1. 绑定机制 2. 支持的数据类型 3. 参数请求中文乱码解决 4.自定义类型转换器 5.最后参数绑定学习小结 SpringMVC作为Controller层(等价servlet和struts中 ...

  6. zabbix解决中文乱码问题(没有测试成功)

    zabbix解决中文乱码问题 1.在windows系统中找一个自己喜欢的字体,这里我们用:msyh.ttf 2.将字体上传至/var/www/html/zabbix/fonts目录下 [root@za ...

  7. Debian 6解决中文乱码

    DEBIAN下中文显示 一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在. 1.挂载ISO文件包,前8个ISO包就可以(这里不在 ...

  8. php如何解决中文乱码问题?

    为什么会出现中文乱码? 很多新手朋友学习PHP的时候,发现程序中的中文在输出的时候会出现乱码的问题,那么为什么会出现这种乱码的情况呢?一般来说,乱码的出现有2种原因,一种是由于编码(charset) ...

  9. MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8

    来看看如何解决乱码问题: 在mysql中默认字符集是latin1, 想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置: [client] default-character-set ...

  10. (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)

    « CloudStack+XenServer详细部署方案(10):高级网络功能应用 (总结)CentOS Linux 5.x在GPT分区不能引导的解决方法 » 2013-1 11 (原创)Linux下 ...

随机推荐

  1. Python学习笔记--高阶技巧(二)

    Socket服务端开发 基本步骤如下: socket客户端开发 基本步骤如下: 1.创建socket对象 2.连接到服务器 3.发送消息 4.接收返回消息 5.关闭连接 正则表达式 基础方法 matc ...

  2. MySQL学习(八)BLOB和TEXT区别

    :都市为存储很大数据而设计的字符串数据类型,分别采用二进制和字符方式存储.当blob和text值太大时,innodb会使用专门的"外部"存储区域来进行存储,此时每个值在行内需要1~ ...

  3. salesforce零基础学习(一百二十八)Durable Id获取以及相关概念浅入浅出

    本篇参考: salesforce 零基础开发入门学习(十一)sObject及Schema深入 https://developer.salesforce.com/docs/atlas.en-us.api ...

  4. opencv-python 2 图像基本操作

    图像的基本操作 获取并修改图像的像素值 可以通过行和列的坐标值获取该像素点的像素值.对于BGR图像,它返回一个蓝色,绿色,红色值的数组.对于灰度图像,仅返回相应的强度值. 可以用同样的方法修改像素点的 ...

  5. 剑指 offer 第 25 天

    第 25 天 模拟(中等) 剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6 ...

  6. Java代理之jdk动态代理+应用场景实战

    本文将先介绍jdk动态代理的基本用法,并对其原理和注意事项予以说明.之后将以两个最常见的应用场景为例,进行代码实操.这两个应用场景分别是拦截器和声明性接口,它们在许多开发框架中广泛使用.比如在spri ...

  7. vue自定义组件——split-pane

    pre { overflow-y: auto; max-height: 500px } github地址: https://github.com/lxmghct/my-vue-components 组 ...

  8. MySQL(十二)索引使用的情况分析

    索引使用的情况分析 数据准备 创建表student_info.course CREATE TABLE `student_info` ( `id` int NOT NULL AUTO_INCREMENT ...

  9. JUC(七)分支合并框架

    JUC分支合并框架 简介 Fork/Join可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务的结果合并称为最终的计算结果. Fork:负责将任务拆分 Join:合并拆分任务 ForkJoi ...

  10. c/c++快乐算法第一天

    c/c++感受算法乐趣(1) 开始时间2023-04-14 18:31:47 结束时间2023-04-14 22:06:02 前言:经过两天的学习,是不是发现编程也挺简单的.其实不然,学好算法同时也是 ...