SpringMVC、三(接收数据与发送数据)

一、SpringMVC的请求处理方法接收请求参数

    1.请求处理方法接收json参数

       1.1创建项目

       1.2完善项目

       1.3导入依赖

<!-- 配置开发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配置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>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

       1.5配置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.springmvcjson.controller"></context:component-scan>

</beans>

1.6创建HTML页面

html1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
<script src="js/jquery-3.5.1.min.js"></script>
    <script>
        $(function () {
            $("#but1").click(function () {
                var usernam = $("#username").val();
                var password = $("#password").val();
                var myage = $("#myage").val();
                var myaddress = $("#myaddress").val();

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

html2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    <script  src="js/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>

html3

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<script src="js/jquery-3.5.1.min.js"></script>
    <script>
        $(function () {
            $("#but1").click(function () {
                var path= "http://localhost:8080/springmvcjson/json/testGetJson.do"
        var data = "{\"username\":\"zhangsan\",\"password\":\"12345\",\"myage\":23,\"myaddress\":\"xian\"}";
        var jsonobj = JSON.stringify(data);
            //注意:不能使用jquery的post方式发送ajax请求,
            // 因为jquery的post方式发送ajax请求时http协议的请求头中的contentType的属性值不是"application/json",
            // 所以会出现“Failed to load resource: the server responded with a status of 415 (Unsupported Media Type)”错误。
            /*
            $.post(path,data,function (response) {
                     alert(response);
            },"json");
             */

            $.ajax(
                {
                    url:path,
                    data:data,
                    type:"POST",
                    contentType:"application/json",
                    success:function (data) {
                        alert(data);
                    }
                }

            );
            })

            $("#but2").click(function () {
                $.ajax({
                    url: "http://localhost:8080/springmvcjson/json/bcakJson.do",
                    type: "POST",
                    dataType: "json",
                    contentType:"application/json",
                    success:function (data) {
                    var jsonString = JSON.stringify(data);
                    alert(jsonString);
                    if (jsonString=="''"){
                        alert("返回值为空");
                    }else{
                        alert(data.username+","+data.password+","+data.myage+","+data.myaddress)
                    }

                    }
                })
            });

            $("#but3").click(function () {
                $.ajax({
                    url:"http://localhost:8080/springmvcjson/json/backJsonList.do",
                    dataType:"json",
                    contentType: "application/json",
                    success:function (data) {
                var jsonString = JSON.stringify(data);
                alert(jsonString);
                if (jsonString=="''"){
                    alert("返回值为空");
                }else{
                    for (var i = 0;i<data.length;i++){
                        alert(data[i].username+","+data[i].password+","+data[i].myage+','+data[i].myaddress)

                    }
                }
                    }
                })
            })

        });


    </script>
</head>
<body>
<input id="but1" type="button" value="测试提交json数据"/>
<input id="but2" type="button" value="测试返回json数据为对象"/>
<input id="but3" type="button" value="测试提交json数据为数组"/>
</body>
</html>

1.7.在webapp文件夹中创建jquery文件,并将jquery-3.5.1.min.js复制进jquery文件。

1.8 在html文件中导入jquery,并发送ajax请求

 

1.9 创建被提交的json数据对应的java实体类

注意:java实体类的成员变量名称与被提交的json数据中的key值相同。

package com.wangxing.springmvcjson.bean;

public class UserBean {
    private  String username;
    private  String password;
    private  int myage;
    private  String myaddress;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getMyage() {
        return myage;
    }

    public void setMyage(int myage) {
        this.myage = myage;
    }

    public String getMyaddress() {
        return myaddress;
    }

    public void setMyaddress(String myaddress) {
        this.myaddress = myaddress;
    }
}

1.10创建控制器

package com.wangxing.springmvcjson.controller;

import com.wangxing.springmvcjson.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 java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/json")
public class JsonController {

    /**
     * 接收json数据
     */
    @RequestMapping(value = "/test1.do",method = RequestMethod.POST)
    public void testGetJson(@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());
    }

  /**
 * 请求处理方法向浏览器页面返回json数据
 */
  @RequestMapping(value = "/test2.do")
  @ResponseBody
  public UserBean testRequest(){
      UserBean userBean = new UserBean();
      userBean.setUsername("zhnagsan");
      userBean.setPassword("000000");
      userBean.setMyage(23);
      userBean.setMyaddress("西安");
      return userBean;
  }

  @RequestMapping(value = "/test3.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;
  }
    /**
     * 接收json数据
     */
    @RequestMapping("/testGetJson.do")
    @ResponseBody
    public  void  testJShouJson(@RequestBody UserBean userBean){
        System.out.println("JsonController---testGetJson");
        System.out.println("username=="+userBean.getUsername());
        System.out.println("password=="+userBean.getPassword());
        System.out.println("myage=="+userBean.getMyage());
        System.out.println("myaddress=="+userBean.getMyaddress());

    }

/**
 * 返回json数据
 */
@RequestMapping("/bcakJson.do")
@ResponseBody
public UserBean backJson(){
    UserBean userBean = new UserBean();
    userBean.setUsername("zhangsan");
    userBean.setPassword("12345");
    userBean.setMyage(23);
    userBean.setMyaddress("西安");
    return userBean;
}
/**
 * 返回json数据
 */
@RequestMapping("/backJsonList.do")
@ResponseBody
public List<UserBean> backJsonList(){
    UserBean userBean=new UserBean();
    userBean.setUsername("lisi");
    userBean.setPassword("123456");
    userBean.setMyage(23);
    userBean.setMyaddress("西安");

    UserBean userBean2=new UserBean();
    userBean2.setUsername("wangwu");
    userBean2.setPassword("123456");
    userBean2.setMyage(25);
    userBean2.setMyaddress("北京");

    List<UserBean> userBeanList=new ArrayList<UserBean>();
    userBeanList.add(userBean);
    userBeanList.add(userBean2);
    return userBeanList;
}

}

测试

http://localhost:8080/springmvcjson/test1.html

@RequestBody

    @RequestBody注解接收来自请求体中的参数。

一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。

“Content-Type:application/json”使用注解@RequestBody可以将请求体里面所有的json数据传到后端,后端再进行解析,封装成java对象

请求处理方法向浏览器页面返回json数据

 /**
 * 请求处理方法向浏览器页面返回json数据
 */
  @RequestMapping(value = "/test2.do")
  @ResponseBody
  public UserBean testRequest(){
      UserBean userBean = new UserBean();
      userBean.setUsername("zhnagsan");
      userBean.setPassword("000000");
      userBean.setMyage(23);
      userBean.setMyaddress("西安");
      return userBean;
  }

  @RequestMapping(value = "/test3.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;
  }

@ResponseBody作用其实是将java对象转为json格式的数据json对象

 

Json对象与json字符串之间的转换

Json对象---》json字符串   JSON.stringify(json对象)

json字符串---》Json对象   eval("("+json字符串+")");

例如:

html2

 

html3

测试

http://localhost:8080/springmvcjson/test3.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值