3、测试代码
@Controller @RequestMapping public class HelloController { @GetMapping("/test/{type}") public String testContentNegotiation() { return "test ContentNegotiation"; } }顺序请求:/test/a.pdf、/test/a.json、/test/a.html、/test/a(无后缀)分别得到的页面截图如下(一一对应)
使用Accept方式演示如下:
后缀的优先级高于Accept,符合我们前面的理论知识。若没有指定后缀,Accept就会生效。
说明:因为我这里resolveViewName()是很定的返回了一个view,相当于可以解析任何扩展名。so即使你的扩展名不存在也会被解析,最终以html形式展示出来。在真实场景中是不会这么搞的
另外:这种case还有一种更为简便的测试方案-->无需提供视图解析器,只需提供默认视图即可,有兴趣的小伙伴可以自行尝试,加深理解。
总结本文借助实例,讲解了ContentNegotiatingViewResolver内容协商在视图解析方面的应用,填补所谓的剩余的20%的内容。
虽然说现在视图技术对于后端来说使用相对较少了,但毕竟thymeleaf还是很优秀的,作为全栈工程师,你也有理由掌握一门模版引擎语言(熟练Vue、React的当我没说)
ContentNegotiation内容协商机制(一)---Spring MVC内置支持的4种内容协商方式【享学Spring MVC】
ContentNegotiation内容协商机制(二)---Spring MVC内容协商实现原理及自定义配置【享学Spring MVC】
ContentNegotiation内容协商机制(三)---在视图View上的应用:ContentNegotiatingViewResolver深度解析【享学Spring MVC】
==The last:如果觉得本文对你有帮助,不妨点个赞呗。当然分享到你的朋友圈让更多小伙伴看到也是被作者本人许可的~==
若对技术内容感兴趣可以加入wx群交流:Java高工、架构师3群。
若群二维码失效,请加wx号:fsx641385712(或者扫描下方wx二维码)。并且备注:"java入群" 字样,会手动邀请入群
==若对Spring、SpringBoot、MyBatis等源码分析感兴趣,可加我wx:fsx641385712,手动邀请你入群一起飞==