文章目录
springmvc的中参数的注入和异步请求的问题
01、异步编程ajax
使用异步编程其实就是:Ajax 是通过XMLHttpRequest封装而来。不论是:jquery还是axios都是它的衍生品。使用异步编程的好处:
- 提供网站的性能
- 实现局部刷新
- 让交互变得更加的友好
02、以axios为例子来说明异步的注意事项
02-01、异步请求 + @ReponseBody
正常的异步请求交互的逻辑。
使用axios发起异步请求的步骤和流程:
-
导入axios.min.js文件
-
开始进行异步请求
axios.post(url,{params}).then.catch axios.get(url,params:{}).then.catch
-
后端sprignmvc方法必须要增加+@ResponseBody
/* * @Author yykk * @Description //TODO 用户保存 * @Date 17:22 2021/10/7 * @Param * @return **/ @PostMapping("/user/save") @ResponseBody public User saveUser(User user) { System.out.println("保存的用户是:"); System.out.println(user); return user; }
02-03、关于@ResponseBody注解
@ResponseBody的具体作用:
- 就是告诉springmvc的路由方法,它是一个异步请求请求的方法。也就说最后的返回不会用视图解析器进行解析,也就不去templates去找页面对应的模板
- 一句话:你返回,浏览器得到什么
- 如果你基础数据类型,你返回什么就是什么?
- 如果返回java对象(bean,List,Map)等,内部会把对象转换json在进行返回
如下图:
02-02、异步请求 +访问非@ReponseBody
你们想法是非常的简单和单纯:定义一个路由方法 + axios。
认识:我们指定如果没有加@ResponseBody的路由方法,使用freemaker或者thymeleaf访问的页面。
问题:
首先要明确:axios处理服务器请求:它一定会有响应结果的
-
axios异步请求@ResponseBody的异步方法。它的返回就是:你返回什么,就得到什么?
-
axios发起异步请求去请求一个没有加@ResponseBody的方法的时候,服务器它返回是什么?
答案是:网页的源代码
如果下图分析:
02、freemaker、thymeleaf 和 vue 它们的相同的相同的差异点是什么?
- vue是一种纯客户端的模板引擎技术,你只需要返回数据,模板的替换和渲染交由vue来实现
- freemarker它们适于服务端模板引擎技术,模板的替换和渲染交由服务器段的freemaker来做、
- 从性能角度来思考的话:vue确实要优于freemaker和thymeleaf.