【SpringMVC】参数传递与用户请求和响应(下)

简介: 【SpringMVC】参数传递与用户请求和响应(下)

2.3 路径传参

知识点3:@PathVariable

如果我要通过id进行删除某一项可以用PathVariable注释,示例:

    @RequestMapping("/hello3/{bid}")
    public String toHello3(@PathVariable("bid") Integer bid) {
        log.info("使用@PathVariable注解传递参数:{}", bid);
        return "index";
    }

运行结果:

2.4 Json数据传参

       在实际开发中运用最多的就是通过Json数据进行传输,在本篇就没有演示对象、数组、以及集合传输,其传输方式与上普通传参略微有异。

SpringMVC默认使用的是jackson来处理json的转换,所以需要在pom.xml添加jackson依赖

 <jackson.version>2.9.3</jackson.version>
 <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>

 

知识点4:@RequestBody

      @RequestBody 注解用于将HTTP请求的请求体内容绑定到方法的参数上。它告诉Spring MVC框架将请求体的内容转换为指定的参数类型,并将其传递给方法进行处理。

       使用@RequestBody注解的参数可以是任何Java对象类型,包括自定义的POJO(Plain Old Java Object)类。Spring MVC会自动根据请求体的内容类型,使用适当的转换器将请求体的内容转换为指定的参数类型。

  • json对象({key1:value1,key2:value2,…})

请求和数据的发送:

{
    "bid": 1,
    "bname": "斗破苍穹",
    "price": 9.9
}

后端接收数据:

    @RequestMapping("/hello5")
    @ResponseBody
    public String toHello5(@RequestBody Book book) {
        System.out.println(book);
        return "index";
    }

 

  • json对象数组([{key1:value1,…},{key2:value2,…}])

请求和数据的发送:

[{
    "bid": 1,
    "bname": "斗破苍穹",
    "price": 9.9
},
{
    "bid": 2,
    "bname": "斗破苍穹",
    "price": 10.9
}
]

 

后端接收数据:

    @RequestMapping("/hello6")
    @ResponseBody
    public String toHello6(@RequestBody List<Book> books) {
        System.out.println(books);
        return "index";
    }

 

@RequestBody与@RequestParam区别

区别:

  • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
  • @RequestBody用于接收json数据【application/json】

应用:

  • 后期开发中,发送json格式数据为主,@RequestBody应用较广
  • 如果发送非json格式数据,选用@RequestParam接收请求参数

三、响应

3.1 响应Json数据

1. 创建控制器:ReturnController类

package com.ycxw.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * @author 云村小威
 * @site blog.csdn.net/Justw320
 * @create 2023-09-06 22:18
 */
@Controller
@RequestMapping("/rs")
public class ReturnController {
}

2. 编写响应数据

    @ResponseBody //响应Json数据
    @RequestMapping("/return1")
    public Map<String, Object> return1(HttpServletResponse response){
        Map<String,Object> maps = new HashMap<>();
        maps.put("code",200);
        maps.put("msg","响应成功");
        return maps;
    }

3. 测试:

3.2 跳转页面响应数据

1. 编写响应的jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
昵称:${name}
又爱又恨:${hobby}
</body>
</html>

2. 编写响应的数据

    @RequestMapping("/return2")
    public String return2(Model model, HttpServletRequest request){
        //填充模型数据
        model.addAttribute("name","云村小威");
        request.setAttribute("hobby","编程");
        //逻辑视图名
        return "index";
    }

3. 测试:

3.3 ModelAndView 响应

  1. ModelAndView是一个在Java Spring框架中使用的类,用于将数据模型和视图信息一起传递给前端页面。它是一种将数据和视图结合在一起的方式,方便开发人员在后端控制器中处理数据并将其传递给前端页面进行展示。
  2. 在ModelAndView中,"Model"表示数据模型,它是一个存储数据的对象,可以在后端控制器中设置数据,并将其传递给前端页面。开发人员可以使用键值对的方式将数据存储在模型中,然后在前端页面中使用这些数据进行展示或处理。
  3. 而"View"表示视图,它是前端页面的表示。在ModelAndView中,开发人员可以设置要展示的视图的名称或路径,以便在请求处理完成后,将数据模型传递给相应的视图进行渲染和展示。
  4. 通过使用ModelAndView,开发人员可以将数据和视图信息封装在一起,方便地传递给前端页面,实现数据的动态展示和交互。这种方式使得后端控制器和前端页面之间的数据传递更加灵活和方便。
    @RequestMapping("/return3")
    public ModelAndView return3(){
        ModelAndView mv = new ModelAndView();
        //填充模型数据
        mv.addObject("name","云村小威");
        mv.addObject("hobby","编程");
        //逻辑视图名
        mv.setViewName("index");
        return mv;
    }

测试:

四、页面跳转

       转发(forward:path)和重定向(redirect:path)这两种跳转方式将会绕开视图解析器的前缀后缀;还有就是如果是在同一controller中则不用使用"/"从根目录开始,而如果是在不同的controller则一定要从根目录开始。

4.1 转发(地址栏不变)

    @RequestMapping("/helloPage1")
    public String toHelloPage1(){
        System.out.println("helloPage1...");
        return "forward:return1";
    }

它相当于“request.getRequestDispatcher("url").forward(request,response)”。使用转发,既可以转发到jsp, 也可以转发到其他的控制器方法。

4.2 重定向(地址栏改变)

    @RequestMapping("/helloPage2")
    public String toHelloPage2(){
        System.out.println("helloPage2...");
        return "redirect:return1";
    }

它相当于“response.sendRedirect(url)”, 也可以转发到其他的控制器方法。

4.3 跳其它的controller

    /*转发*/
    @RequestMapping("/helloPage3")
    public String toHelloPage3(){
        System.out.println("helloPage3...");
        return "forward:/param/hello1";
    }
    /*重定向*/
    @RequestMapping("/helloPage4")
    public String toHelloPage4(){
        System.out.println("helloPage4...");
        return "redirect:/param/hello1";
    }

测试重定向:redirect:/param/hello1

       如果是在同一controller中则不用使用 "/" 从根目录开始,而如果是在不同的controller则一定要从根目录开始。

相关文章
|
19天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
58 2
|
2月前
|
JSON 前端开发 Java
Spring MVC——获取参数和响应
本文介绍了如何在Spring框架中通过不同的注解和方法获取URL参数、上传文件、处理cookie和session、以及响应不同类型的数据。具体内容包括使用`@PathVariable`获取URL中的参数,使用`MultipartFile`上传文件,通过`HttpServletRequest`和`@CookieValue`获取cookie,通过`HttpSession`和`@SessionAttribute`获取session,以及如何返回静态页面、HTML代码片段、JSON数据,并设置HTTP状态码和响应头。
59 1
Spring MVC——获取参数和响应
|
2月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
39 1
Spring MVC——项目创建和建立请求连接
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
58 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
5月前
|
缓存 前端开发 Java
SpringMVC原理(1)-文件上传请求
【7月更文挑战第2天】SpringMVC文件上传请求原理:文件上传请求的执行流程、文件上传的自动配置原理 涉及组件:MultiPartFile、MultipartResolver、MultipartHttpServlet
|
6月前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
62 3
|
6月前
|
JSON Java fastjson
SpringMVC(二)【请求与响应】(2)
SpringMVC(二)【请求与响应】
|
6月前
|
JSON 前端开发 数据格式
SpringMVC的数据响应-直接回写json字符串
SpringMVC的数据响应-直接回写json字符串
|
6月前
|
前端开发 Java Spring
SpringMVC的数据响应-19
SpringMVC的数据响应-19