Conceptos básicos de SpringMVC: solicitud de valor de retorno de respuesta, respuesta de datos json, encapsulación y conversión de datos json

valor de retorno de la respuesta

Al procesar una solicitud, el tipo de valor de retorno de la función del controlador del controlador puede determinar cómo responde a la solicitud.

El valor de retorno es de tipo String

Cuando el valor devuelto es de tipo cadena, buscará el tipo de archivo especificado en la ruta especificada por el analizador de vista de acuerdo con el valor devuelto y lo mostrará.

Método de manejo del controlador

@RequestMapping("/hello")
    public String testJson() {
    
    
        System.out.println("执行了");
        return "success";
    }

Ver configuración de resolución

<!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

Al procesar /hellola solicitud, irá a la ruta especificada por la resolución de vista classpath/WEB-INT/pages/para encontrar el archivo success.jsp y mostrarlo en el navegador.

El valor de retorno es nulo

Si el valor de retorno es nulo y el controlador maneja el método de solicitud sin ningún reenvío ni redirección, se buscará en el archivo la ruta especificada por la resolución de vista de forma predeterminada 请求名称.类型名.

@RequestMapping("/hello")
    public void testJson() {
    
    
        System.out.println("执行了");
    }

Como se indicó anteriormente, buscará hello.jspel archivo, si no puede encontrarlo, informará directamente al 404.
Generalmente, cuando el valor devuelto es de tipo nulo, se reenviará y redirigirá en el método de procesamiento del controlador.
El siguiente código contiene tres métodos.

@RequestMapping("/testVoid")
    public void testVoid(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
    
    
        System.out.println("执行了");
        // 第一种:编写请求转发程序
        // httpServletRequest.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(httpServletRequest,httpServletResponse);
        // 第二种:重定向
        // httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/index.jsp");
        //设置中文乱码问题
        httpServletResponse.setCharacterEncoding("UTF-8");
        httpServletResponse.setContentType("text/html;charset=UTF-8");
        // 第三种:直接会响应。直接打印出以下字符
        httpServletResponse.getWriter().println("你好");
    }

Si no conoce HttpServletRequest y HttpServletResponse, puede leer este blog: Clases de implementación de HttpServletRequest y HttpServletResponse

El valor de retorno es ModelAndView

Encapsule los datos creando un objeto ModelAndView y luego salte al archivo de tipo especificado en la ruta especificada del sistema de análisis de vista.ModelAndView implementa la capa inferior con String como el tipo de valor devuelto.

@RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView() {
    
    
        System.out.println("执行了");
        User user = new User();
        user.setName("美美");
        user.setPassword("123");
        user.setAge(18);
        ModelAndView mv = new ModelAndView();
        mv.addObject("user",user);
        mv.setViewName("success");
        return mv;
    }

Datos JSON de respuesta

Envíe datos json al servidor en la página principal de jsp, el método de procesamiento del controlador encapsula los datos json en el tipo JavaBean a través de @RequestBody y finalmente convierte el tipo JavaBean en datos json a través de @ResponseBody.
Springmvc usa MappingJacksonHttpMessageConverter de forma predeterminada para convertir datos json, que deben agregarse al paquete jackson.

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.11.2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.11.2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.11.2</version>
    </dependency>

Primero importe el archivo jquery.js y colóquelo en la carpeta js debajo de la ruta de clase.
Nota: cuando creamos el controlador frontal, interceptamos todas las solicitudes, incluidos estos archivos estáticos.

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

Entonces, debemos filtrar estos archivos estáticos en el archivo de configuración de springmvc.

<!-- 设置静态资源不过滤 -->
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/img/" mapping="/img/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>

enviar datos json

<button id="btn">按钮</button>
    <script>
        $(function () {
    
    
            $("#btn").click(function () {
    
    
                $.ajax({
    
    
                    url:"request/testJson",
                    contentType:"application/json;charset=UTF-8",
                    data:'{"name":"aa","password":100}',
                    dataType:"json",
                    type:"post",
                    success:function(data){
    
    
                        alert(data);
                        alert(data.name);
                    }
                });
            })
        })
    </script>

Método de manejo del controlador

// ResponseBody 将JavaBean对象转换成JSON数据
    @RequestMapping("/testJson")
    public @ResponseBody  User testJson(@RequestBody User user) {
    
    
        System.out.println("执行了");
        System.out.println("user:" + user);
        return user;
    }

Encapsulado con éxito en el tipo JavaBean
inserte la descripción de la imagen aquí

convertido con éxito a datos json
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44660367/article/details/108922109
Recomendado
Clasificación