SpringMVC (el método de procesamiento de solicitudes recibe parámetros json)

El método de procesamiento de solicitudes de SpringMVC recibe parámetros de solicitud
1. El método de procesamiento de solicitudes recibe parámetros json

1.1 Crear proyecto
1.2 Mejorar el proyecto
1.3 Importar dependencia

<!-- 配置开发SpringMVC所以来的jar包 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.5.RELEASE</version>
</dependency>
<!-- 配置ServletAPI依赖 -->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.0.1</version>
  <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.8</version>
</dependency>

1.4 configurar web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>dispatcherServle</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServle</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

1.5 Configurar el archivo de configuración SpringMVC

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启注解-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--配置自动扫描包-->
    <context:component-scan base-package="com.wangxing.springmvc.controller"></context:component-scan>
</beans>

1.6 Crear página HTML

<!DOCTYPE html>
<html lang="en">
	<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
   </head>
<body>
    <table>
        <tr>
            <td colspan="2"><h1>用户注册</h1></td>
        </tr>
        <tr>
            <td>用户名:</td>
            <td><input id="username" type="text" name="username"/></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input id="password" type="password" name="password"/></td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td><input id="myage" type="text" name="myage"/></td>
        </tr>
        <tr>
            <td>地址:</td>
            <td><input id="myaddress" type="text" name="myaddress"/></td>
        </tr>
        <tr>
            <td colspan="2"><input id="but1" type="button" value="提交" /></td>
        </tr>
    </table>
</body>
</html>

1.7 Cree un archivo jquery en la carpeta de la aplicación web y copie jquery-3.5.1.min.js en el archivo jquery.
Vuelva a cargar el archivo jquery-3.5.1.min.js en el archivo jquery una vez

1.8 Importar jquery en el archivo html y enviar una solicitud ajax

<script  src="jquery/jquery-3.5.1.min.js"></script>
<script>
    $(function () {
        $("#but1").click(function () {
            var username=$("#username").val();
            var password=$("#password").val();
            var myage=$("#myage").val();
            var myaddress=$("#myaddress").val();
            //组织成json数据[json对象]
            var params={"username":username,"password":password,"myage":myage,"myaddress":myaddress};
            //3.将上面组织好的json数据发送到控制器类的请求处理方法中接收处理
            $.ajax({
                //设置访问地址
                url:"http://localhost:8080/springmvc3/test1.do",
                //设置被发送的具体数据【json字符串】
                data:JSON.stringify(params),
                //设置请求提交方式
                type:"POST",
                //设置响应数据的类型是json
                datatype:"json",
                //设置请求的数据是json数据,绝对不可以省略
                contentType:"application/json",
                //设置请求发送成功以后的处理函数
                success:function(data){
                  alert(data);
                }
            });
        });
    });
</script>

Nota: No puede usar el método de publicación de jquery para enviar solicitudes ajax, porque cuando el método de publicación de jquery envía una solicitud ajax, el valor de propiedad del contentType en el encabezado de solicitud del protocolo http no es "application / json", por lo que "No se pudo cargar recurso: el servidor "aparecerá respondido con un estado de error 415 (Tipo de medio no admitido)".
1.9 Cree una clase de entidad java correspondiente a los datos json enviados.
Nota: El nombre de la variable miembro de la clase de entidad java es el mismo que el valor clave en los datos json enviados.
1.10 Crear controlador

package com.wangxing.springmvc.controller;
import com.wangxing.springmvc.bean.UserBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {
    @RequestMapping(value = "/test1.do",method = RequestMethod.POST)
    public void   testRequest(@RequestBody UserBean userBean){
        System.out.println("username=="+userBean.getUsername());
        System.out.println("password=="+userBean.getPassword());
        System.out.println("myage=="+userBean.getMyage());
        System.out.println("myaddress=="+userBean.getMyaddress());
    }
}

11. 测试
http: // localhost: 8080 / springmvc3 / register.html

Salida de consola

@RequestBody La
anotación @RequestBody recibe parámetros del cuerpo de la solicitud.
Generalmente se utiliza para procesar datos en formato de codificación que no es Content-Type: application / x-www-form-urlencoded, como application / json, application / xml y otros tipos de datos.
"Content-Type: application / json" usa la anotación @RequestBody para transmitir todos los datos json en el cuerpo de la solicitud al back-end, que luego los analizará y los encapsulará en un objeto java.
El método de procesamiento de solicitudes devuelve datos json a la página del navegador

package com.wangxing.springmvc.controller;

import com.wangxing.springmvc.bean.UserBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {
    @RequestMapping(value = "/test1.do")
    @ResponseBody
    public UserBean   testRequest(){
        UserBean user1=new UserBean();
        user1.setUsername("zhangsan");
    	user1.setPassword("000000");
    	user1.setMyage(23);
    	user1.setMyaddress("西安");
        return user1;
    }

@RequestMapping(value = "/test2.do")
@ResponseBody
public List<UserBean> testRequest2(){
    UserBean user1=new UserBean();
    user1.setUsername("zhangsan");
    user1.setPassword("000000");
    user1.setMyage(23);
    user1.setMyaddress("西安");
    UserBean user2=new UserBean();
    user2.setUsername("lisi");
    user2.setPassword("111111");
    user2.setMyage(24);
    user2.setMyaddress("北京");
    List<UserBean>  userBeanList=new ArrayList<UserBean>();
    userBeanList.add(user1);
    userBeanList.add(user2);
    return userBeanList;
	}
}

http: // localhost: 8080 / springmvc3 / test1.do

{"username":"zhangsan","password":"000000","myage":23,"myaddress":"西安"}

http: // localhost: 8080 / springmvc3 / test2.do
[{"nombre de usuario": "zhangsan", "contraseña": "000000", "myage": 23, "myaddress": "西安"}, {"username" : “Lisi”, “contraseña”: “111111”, “myage”: 24, “myaddress”: “北京”}]

La función de @ResponseBody es en realidad convertir el objeto java en datos en formato json [objeto json].

Conversión entre el objeto Json y la cadena json
Objeto Json— "cadena json JSON.stringify (objeto json)
cadena json—" Objeto Json eval ("(" + cadena json + ")");
Por ejemplo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    <script  src="jquery/jquery-3.5.1.min.js"></script>
    <script>
        $(function () {
            $("#but1").click(function () {
                //定义json对象
                var  jsonObj={id:1001,username:"zhangsan",age:23,address:"西安"};
                //alert(jsonObj); //[object Object]
                var jsonString=JSON.stringify(jsonObj);
                alert(jsonString); //{"id":1001,"username":"zhangsan","age":23,"address":"西安"}
            });
            $("#but2").click(function () {
                   //var jsonString="{\"id\":1001,\"username\":\"zhangsan\",\"age\":23,\"address\":\"西安\"}";
                   var jsonString="{'id':1001,'username':'zhangsan','age':23,'address':'西安'}";
                   var jsonObj=eval("("+jsonString+")");
                   alert(jsonObj);  //[object Object]
            });
        });
    </script>
</head>
<body>
    <input id="but1" type="button" value="json对象转换成Json字符串" /><br>
    <input id="but2" type="button" value="Json字符串转换成json对象" />
</body>
</html>

Supongo que te gusta

Origin blog.csdn.net/guoguo0717/article/details/110262180
Recomendado
Clasificación