Spring MVC(二)—不同的返回值类型、Json处理(jackson、gson、fastjson)、sessionAttributes——把属性存入 session 中、全局异常处理(三种方式)

Spring MVC(二)——

一、不同的返回值类型

1、返回值为 void

在这里插入图片描述
在这里插入图片描述

2、返回值为 字符串

返回值为字符串,主要有三种情况:

方法返回值为字符串:

  1. 重定向 / 服务端跳转
  2. 逻辑视图名
  3. 真的字符串

当返回的字符串有前缀时,代表不同的功能:
1、forward
2、redirect

总的功能看下图:
在这里插入图片描述

可以看到这里返回字符串 01 返回的是 名称为 01 的页面,如果就是想要返回字符串 01 呢?可以通过注解 @ResponseBody 来返回:
在这里插入图片描述
换句话说加了这个注解,你返回什么它就显示什么。如果每个方法都要加上,就会很麻烦,可以加在类上面:
在这里插入图片描述

二、Json处理

在这里插入图片描述

1、jsckson

a、jsckson的使用

Spring MVC 怎么接收跟发送 json 格式的对象呢?

首先先导入依赖:
在这里插入图片描述
然后是 java 代码:
在这里插入图片描述

然后看下结果:
在这里插入图片描述

可以看到 json 格式的返回成功了,但是时间的格式不对,需要格式化:
在这里插入图片描述

在这里插入图片描述

上图中,可以看到本来应该是 username 的字段,显示为 name,可以通过注解,修改生成后的 json 格式显示的属性名,让本来 username 改名为 name:
在这里插入图片描述

MVC的底层还是 ObjectMapper 来转换 json 格式和对象。

b、xml 配置 jackson 自定义转换逻辑

如果不写注解,可以通过 xml 配置去完成 json 格式的转换:
在这里插入图片描述
在这里插入图片描述

c、把 json 格式转换为对象

在这里插入图片描述
注意:必须传进来的是 json 格式,而不是键值对方式。

2、gson 的使用

a、依赖导入

在这里插入图片描述

然后是 web.xml 配置:
在这里插入图片描述
在这里插入图片描述

b、格式化

首先就在 java 代码处新建一个对象:
在这里插入图片描述
然后是 xml 配置:
在这里插入图片描述
在这里插入图片描述

gson 主要是安卓用的多

3、fastjson

fastjson 因为是引入外部的依赖,所以一定需要自己手动配置 httpMessageConverter 。

xml 配置:
在这里插入图片描述
java 代码没有变化。

如果有报错,那就是需要加上这个玩意:
在这里插入图片描述

4、json 的一些问题

上一篇博客中,有直接返回字符串的案例,如果是中文的情况下可能会有乱码,解决方式如下:
在这里插入图片描述

5、静态资源

在这里插入图片描述静态资源,比如:html、css、js、图片、mp3、mp4,该怎么放呢( jsp 是动态资源)?

静态资源默认情况下是访问不到的,因为拦截规则写了 / ,意思是拦截所有请求,包括静态资源。

解决办法有三种:

a、办法一 —— *.action

在这里插入图片描述
可以给所有请求加个 action,这样依赖静态资源就不会拦截了,但是弊端也很明显,所有接口都要改。

b、办法二——默认处理器处理

在这里插入图片描述

在这里插入图片描述

这里得是一个 / 。

就只需要改动这么点,就能访问到静态资源。

c、办法三——路径匹配(推荐)

在这里插入图片描述

三、sessionAttributes——把属性存入 session 中

@sessionAttributes 这个注解能够把属性存入到 session 中,同样的,也有方法自动从 session 中取出来:

1、存属性

在这里插入图片描述

2、取属性

在这里插入图片描述
注意:如果 session 中没有对应的属性,是会报错的。

3、移除属性

在这里插入图片描述

四、全局异常处理

异常不能像平时那样贪方便直接各种 try…catch 处理,要有地方专门统一的处理,用的还是 AOP 那套。
在这里插入图片描述

1、前期准备

依赖导入:
在这里插入图片描述

java代码:
在这里插入图片描述
xml 文件配置:
在这里插入图片描述
web xml 文件配置:
在这里插入图片描述

2、方式一——实现 HandlerExceptionResolver 接口(推荐)

创建一个类,并实现 HandlerExceptionResolver:
在这里插入图片描述

jsp 页面:
在这里插入图片描述
然后效果:
在这里插入图片描述

3、方式二——注解 @ControllerAdvice(推荐)

在这里插入图片描述
然后效果:
在这里插入图片描述

这个方式的好处是一个类可以定义很多个处理方法。

4、方式三—— spring-servlet.xml 文件配置

在这里插入图片描述

效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值