• @ResponseBody 和 @RequestBody以及@PathVariable的作用


    一、@ResponseBody

    @ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

    @ResponseBody的作用是将后端以return返回的javabean类型数据转为json类型数据。(后端向前端传数据)

    案例:

    前端异步请求:

    1. function loginAction() {
    2. // 获取用户输入的账号和密码
    3. var name = $('#count').val();
    4. var password = $('#password').val();
    5. $.ajax({
    6. url : 'account/login',
    7. type : 'post',
    8. // data对象中的属性名要和服务端控制器的参数名一致 login(name, password)
    9. data : {
    10. 'name' : name,
    11. 'password' : password
    12. },
    13. dataType : 'json',
    14. success : function(result) {
    15. if (result.state == 0) {
    16. // 登录成功,设置cookie并跳转edit.html
    17. addCookie('userId', result.data.id);
    18. addCookie('nick', result.data.nick);
    19. location.href = 'edit.html';
    20. } else {
    21. // 登录失败
    22. var msg = result.message;
    23. $('#sig_in').next().html(msg);
    24. $('#sig_in').next().css("color", "red");
    25. }
    26. },
    27. error : function(e) {
    28. alert("系统异常");
    29. }
    30. });
    31. $('#password').val("");
    32. }

    后端业务逻辑:

    1. @RequestMapping("/login")
    2. @ResponseBody
    3. public Object login(String name, String password, HttpSession session) {
    4. user = userService.checkLogin(name, password);
    5. session.setAttribute("user", user);
    6. return new JsonResult(user);
    7. }

    二、@RequestBody

    @RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。

    @RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象(前端向后端传递数据)

    例如上方后端业务逻辑可以改为:

    1. @RequestMapping("/login.do")
    2. @ResponseBody
    3. public Object login(@RequestBody User loginUuser, HttpSession session) {
    4. user = userService.checkLogin(loginUser);
    5. session.setAttribute("user", user);
    6. return new JsonResult(user);
    7. }

    三、@PathVariable

    @PathVariable的作用是获取url中的动态参数,常用于RestFul风格的编程。通过这种方式,前端可以将参数写在url中
    例如:通过id获得用户信息,前端的url可以表示为

    http://localhost:8080/getUser/1 这个1就是想要查询的用户id

    后端通过@PathVariable来接收这个动态参数

    1. @GetMapping("/getUser/{id}")
    2. public User getUser(@PathVariable("id") String id){
    3. return userService.getUserById(id);
    4. }
  • 相关阅读:
    FreeRTOS 互斥量 优先级反转(翻转)和优先级继承 详解
    大数据产业酝酿巨变 元宇宙新格局呼之欲出
    009:获取20日均线数据
    Samba+ldap认证
    centos7安装mysql8.x的注意事项,与5.x版本有许多不同
    多目标应用:基于多目标灰狼优化算法MOGWO求解微电网多目标优化调度(MATLAB代码)
    C语言 &=(按位与后赋值)^=(按位异或后赋值) |=(按位或后赋值)
    Docker-Compose 使用
    HarmonyOS实现静态与动态数据可视化图表
    【Kafka】ZooKeeper启动失败报错java.net.BindException: Address already in use: bind
  • 原文地址:https://blog.csdn.net/weixin_64443786/article/details/132758347