springMVC(二)—— 进阶

一、解决中文乱码问题

解决中文乱码问题的关键在于判断字符是什么时候乱码

  1. 先在java程序里刚生成这个值的地方打印一下,如果在控制台输出就乱码了,那就排除浏览器和jsp页面的编码出问题。否则

  1. 看浏览器的编码

  1. 看这个jsp页面的编码是否设置好了

  1. 一般不用怀疑是tomcat的编码出问题,因为如果tomcat8.0之后,不需要设置URIEncoding="UTF-8",默认就是utf-8编码。

  1. 如果在刚接受到前端传来的值,后端打印出来就是乱码,那就要用springMVC提供的过滤器(不过我们都将过滤器作为默认的死配置,不管乱不乱码,只要是个springMVC项目就给配上过滤器)

自此之后,web.xml的“死配置”变成了:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--1.注册DispatcherServlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--关联SpringMVC配置文件:通过初始化参数指定SpringMVC配置文件的位置--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!--配置DispatcherServlet启动级别:数字越小,启动越早--><load-on-startup>1</load-on-startup></servlet><!--所有请求都会被springmvc拦截--><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern>  <!--但jsp页面除外,/*才包括jsp页面--></servlet-mapping><!--2.配置springMVC的乱码过滤器--><filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

但某些极端情况下,springMVC提供的过滤器也没用了。解决办法视频吧

二、JSON的使用

再重申一遍,JSON只是一种数据交换格式,本身可以直接理解成String字符串类型,并不是一种语言。

进入前后端分离时代以后,后端只需要给前端提供一个controller接口,而前端是纯HTML页面,前端和后端完全独立。如何交互?就需要约定好一种数据传输格式——JSON。

2.1 前端的json与js互转

前端需要将json转为js对象才能用。

2.2 后端的JSON与java对象互转——Jackson

  1. 导jar包

叫这个名字:jackson-databind

  1. 在springmvc.xml配置解决JSON乱码问题的配置

  1. 可以用啦

注意: 因为现在都是前后端分离的,后端直接返回JSON字符串,而不要走视图解析器(后端开发自己测试的时候再用视图解析器看一眼)。两种直接返回字符串的方法:

  • 在controller类名上加一个@RestController注解

  • 在controller类名上加@Controller注解,在方法名上加@ResponseBody注解

如果java对象是Date类的时间格式,如何转换json?

那如何转为人能看懂的格式呢?

法(一)用java自带的SimpleDateFormat去转

法(二)用jackson提供的方法去转

2.3 后端的json与java对象互转——fastjson

fastjson和jackon用哪个?

公司让用哪个就用那个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/17720.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter学习笔记

SpringCloud Alibaba学习笔记 1、项目搭建 版本依赖关系&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1、搭建父工程 spring-initializr构建项目 清理父工程中不必要的文件/文件夹 修改pom.xml文件 <…

(LFPAK56)BUK7Y7R0-40HX 40V、N 通道BUK9Y6R5-40HX表面贴装汽车用MOSFET器件

汽车用MOSFET将低压超级结技术与先进的封装设计相结合&#xff0c;以实现高性能和耐用性。Trench 9 MOSFET系列产品全部符合AEC-Q101标准&#xff0c;且超越了这一国际汽车级标准的要求&#xff0c;在包括温度循环 (TC)、耐高温栅极偏置 (HTGB)、耐高温反向偏置 (HTRB) 和断续工…

开篇(变量、运算符、进制)

一、Java简介 JDK&#xff08;JRE&#xff08;JVM & API&#xff09;、Java language&#xff08;tools & APIs&#xff09;&#xff09;&#xff1b;java源文件 → javac的编译 → class类&#xff08;会生成一个或多个class文件&#xff09;&#xff1b; * 使用 jav…

ARM_异常处理流程_编写软中断swi验证保存现场和恢复现场

keil .text .global _start _start:1.构建异常向量表b resetb undefb software_interruptb prefetch_abortb data_abortb .b irqb fiq reset:系统上电之后处于svc模式初始化svc模式下的栈指针ldr sp,0x400008002.从SVC模式切换到user模式 msr cpsr,#0xD0mrs r0,cpsrorr r0,r0,…

时序预测 | Matlab+Python实现基于高斯混合模型聚类结合CNN-BiLSTM-Attention的风电场短期功率预测

时序预测 | MatlabPython实现基于高斯混合模型聚类结合CNN-BiLSTM-Attention的风电场短期功率预测 目录 时序预测 | MatlabPython实现基于高斯混合模型聚类结合CNN-BiLSTM-Attention的风电场短期功率预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于高斯混…

LinearAlgebraMIT_4_矩阵的LU分解

矩阵做逆变换需要要反过来&#xff0c;如下&#xff0c; 转置的逆等于逆的转置。 在知道了上面的基础知识后&#xff0c;我们进行矩阵的分解&#xff0c;常见如LU分解和LDU分解&#xff0c;如下&#xff0c; 在这里&#xff0c;我们首先具有一个矩阵A&#xff0c;我们对矩阵A进…

(转载)极限学习机(extreme learning machine, ELM)的回归拟合及分类(matlab实现)

单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN)以其良好的学习能力在许多领域中得到了广泛的应用。然而&#xff0c;传统的学习算法(如BP算法等)固有的一些缺点&#xff0c;成为制约其发展的主要瓶颈。前馈神经网络大多采用梯度下降方法&#xff…

C语言,指针易错点

1、封装函数&#xff0c;用指针实现字符串连接 #include <stdio.h> #include <string.h> void MyStrcat(char *dest,char *src) {int i;for(i0;*(desti);i);for(int j0;*(srcj);j)*(desti)*(srcj);*(desti)0; } int main(int argc, const char *argv[]) {char des…

Sentinel持久化实战

前言 Sentinel有pull&#xff08;拉&#xff09;模式&#xff0c;和push&#xff08;推&#xff09;模式。本文是使用reids实现pull模式。 通过SPI机制引入自己的类 在项目的 resources > META-INF > services下创建新文件&#xff0c;文件名如下&#xff0c;内容是自…

宝塔 安装/使用/备份数据 Jenkins-图文小白教程

一、Jenkins包下载 大家可以从Jenkins官网&#xff08;https://www.jenkins.io/&#xff09;根据自己的需要下载最新的版本。 但Jenkins官网下载较慢&#xff0c;容易造成下载失败。可以去国内的开源镜像网站下载Jenkins最新版本。目前博主使用的是清华大学的开源镜像网站&…

浅谈Node.js中的npm和yarn

官方文档&#xff1a; npmhttps://www.npmjs.cn/ yarnhttps://yarn.bootcss.com/ npm和yarn的作用 yarn和npm都是构建和打包javascript代码的工具 区别 npm&#xff1a; 1npm使得js开发者易于分享其为解决特定问题而编写的代码&#xff0c;且可供其他开发者在他们自己的应…

第十一章:C语言数据结构与算法初阶之排序

系列文章目录 文章目录 系列文章目录前言排序的概念及其运用排序的概念常见的排序算法 常见排序算法的实现1.直接插入排序2. 希尔排序&#xff08;缩小增量排序&#xff09;3. 直接选择排序4. 堆排序5. 冒泡排序6. 快速排序将区间按照基准值划分为左右两半部分的常见方式&#…