响应 [SpringMVC]

响应

响应:

  • 响应页面
  • 响应数据
    • 文本数据
    • JSON数据

响应页面:

后端控制器:

在这里插入图片描述

  • 可以看到我们的page.jsp页面是放在了根路径之下的, 所以最终返回的页面路径一定是前面是+/, 也就是绝对路径, 不能是相对路径, 如果相对路径会跑到test路径下
postman发送请求:

在这里插入图片描述

可以看到页面是正常返回了

那么可以得到结论, 响应页面其实就是控制器方法返回值为String, 值为页面路径

  • 这里有很多小伙伴会认为为什么没有出现异常, 不是应该访问不到jsp页面吗? 不是前端控制器拦截了所有请求吗?
  • —> 其实这里是因为对于.jsp结尾的页面请求, 在tomcat中有内置的JspServlet可以处理
    • 但是如果是访问后端的html页面或者是js, css都是不行的, 需要设置SpringMvcSupport, 也就是创建一个类继承WebMvcSupport类, 然后实现其中的addResourceHandlers()方法, 设置放行对应的请求给tomcat才可以

响应文本:

就直接响应String类型返回值, 但是不要忘记添加@ResponseBody注解, 就可以了

  • 添加@ResponseBody注解之后就是告诉后端响应数据的时候将数据放到响应体中响应
    • 添加该注解之后就不会走视图解析器了(也就不会认为这是响应页面), 而是会直接将数据写到响应体中响应回前端
  • 此时响应头中的content-type应该是text/html

响应JSON数据:

就直接响应Java对象即可, 也不要忘记添加@ResponseBody注解

  • 添加了@ResponseBody注解之后如果响应数据是Java对象, 那么默认会通过对应的转换器将该对象转换为JSON数据, 然后跳过视图解析器, 直接放到响应体中响应给前端
    • 这里使用的控制器不是前面我们讲过的Converter接口实现类, 而是使用的HttpMessageConverter接口实现类MappingJackson2HttpMessageConverter完成的
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3i35Jby3-1679316078695)(E:\非凡英才\SpringMVC\图解\MappingJackson2HttpMessageConverter.png)]
      • 这个过程中就使用到了Jackson, 所以之前我们讲过需要导入Jackson的坐标, 后面到了SpringBoot就不需要了, 因为SpringBoot内置了Jackson
  • 此时响应头中的content-type应该是application/json

补充:

HttpMessageConverter

Http请求响应报文其实都是字符串,当请求报文到java程序会被封装为一个ServletInputStream流,开发人员再读取报文,响应报文则通过ServletOutputStream流,来输出响应报文。

从流中只能读取到原始的字符串报文,同样输出流也是。那么在报文到达SpringMVC / SpringBoot和从SpringMVC / SpringBoot出去,都存在一个字符串到java对象的转化问题。这一过程,在SpringMVC / SpringBoot中,是通过HttpMessageConverter来解决的。HttpMessageConverter接口源码

Converter接口:

converter接口的作用就是将前端传递过来的字符串参数转换为日期, 自定义的对象类型等, 因为前端传递过来的数据肯定是字符串数据, 一般的类型, 比如转为int等类型, springmvc中都已经是提供了类型转换器, 日期类型则需要通过converter接口实现类进行转换

上述两个接口都是转换器, 只不过转换的东西不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值