SpringMVC实现JSON数据处理,设置静态资源过滤

文章目录

    • 设置静态资源过滤
    • JSON数据处理
      • 使用@RequestBody注解,前台传的json的字符串在后台转换成JavaBean的对象
      • 使用@ResponseBody注解,在后台把JavaBean对象转换成json字符串,直接响应
      • @RequestBody注解与@ResponseBody注解结合使用
      • 扩展:ResponseEntity把JavaBean对象转换成json字符串,直接响应
      • 扩展: @RestController把JavaBean对象转换成json字符串,直接响应

设置静态资源过滤

使用SpringMVC框架,DispatcherServlet(核心控制器)会拦截到所有的资源,导致静态资源(img、css、js)也会被拦截,从而不能被使用。
SpringMVC实现JSON数据处理,设置静态资源过滤_第1张图片
解决方法:在springmvc.xml配置文件配置静态资源不进行拦截。

    
    <mvc:resources mapping="/js/**" location="/js/" />
    
    <mvc:resources mapping="/images/**" location="/images/"/>


    
    

JSON数据处理

使用@RequestBody注解把json的字符串转换成JavaBean对象,需要引入jackson(或fastjson)相关依赖包,如没有引入,类型转换异常报415。

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.9.6version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.9.6version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-annotationsartifactId>
            <version>2.9.6version>
        dependency>

使用@RequestBody注解,前台传的json的字符串在后台转换成JavaBean的对象

回顾:RequestBody注解:获取请求体的内容,参数拼接成一个字符串

回顾:jQuery框架ajax使用

前端(POST方式)传入一个JSON数据,后台会将JSON数据转成JavaBean

@Controller
@RequestMapping(value = "/json")
public class JsonHandlerController {

    /*使用@RequestBody注解把 前台传的json的字符串 在后台转换成JavaBean的对象
     @RequestBody:如果使用@RequestBody接收数据转成 JavaBean,客户端提交数据必须为 JSON格式   注意:提交方式要是POST
          @RequestBody接收整个提交内容体,并转换成JavaBean对象
     */
    @RequestMapping(value = "/add")
    public void add(@RequestBody User user){
        System.out.println(user);
    }
}

使用@ResponseBody注解,在后台把JavaBean对象转换成json字符串,直接响应

方法上加上@ResponseBody注解,响应数据为JSON格式数据

	/*
     @ResponseBody:方法上加上@ResponseBody注解,响应数据为JSON数据或String。
     */
    @ResponseBody
    @RequestMapping(value = "/outjsonresponse")
    public User outJsonResponseBody(){
        User user = new User();
        user.setName("周哈哈");
        user.setLevel(66);
        return user;
    }

SpringMVC实现JSON数据处理,设置静态资源过滤_第2张图片

@RequestBody注解与@ResponseBody注解结合使用

  /*
     @RequestBody:如果使用@RequestBody接收数据转成 JavaBean,客户端提交数据必须为 JSON格式   注意:提交方式要是POST
     @ResponseBody:方法上加上@ResponseBody注解,响应数据JSON数据。
     */
    @ResponseBody
    @RequestMapping(value = "/bean")
    public User addBean(@RequestBody User user){
        System.out.println(user);
        return user;
    }

前端

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
    <script src="/js/jquery-2.2.3.min.js">script>

head>
<body>
<button type="button" id="btn">提交JSON数据button>

<script>
    $('#btn').click(function () {
        //AJAX请求方式,向后台发送JSON格式数据
        $.ajax({
            url:'/json/bean',
            type:'POST',
            data:'{"name":"admin","level":123}',
            dataType: "json",
            contentType:'application/json;charset=utf-8',
            success:function (data) {
                console.log(data);
            }
        });
    });
script>
body>
html>

客户端提交数据
在这里插入图片描述

后台响应数据
SpringMVC实现JSON数据处理,设置静态资源过滤_第3张图片

扩展:ResponseEntity把JavaBean对象转换成json字符串,直接响应


    //扩展:后台把JavaBean对象转换成json字符串,直接响应
    @RequestMapping(value = "/demo")
    public ResponseEntity<User> outJson(){
        User user = new User();
        user.setName("周哈哈");
        user.setLevel(66);
        //第1个参数:需要响应的数据
        //第2个参数:响应的状态
        return  new ResponseEntity<User>(user, HttpStatus.OK);
    }

SpringMVC实现JSON数据处理,设置静态资源过滤_第4张图片

扩展: @RestController把JavaBean对象转换成json字符串,直接响应

/*
扩展:@RestController注解相当于@Controller @ResponseBody,
可以后台把JavaBean对象转换成json字符串,直接响应
*/
@RestController  //相当于写了  @Controller   @ResponseBody
@RequestMapping(value = "/restController/json")
public class JsonHandlerRestController {
    //后台把JavaBean对象转换成json字符串,直接响应
    @RequestMapping(value = "/demo")
    public User outJson(){
        User address = new User();
        address.setName("张三三");
        address.setLevel(20);
        return  address;
    }
}

SpringMVC实现JSON数据处理,设置静态资源过滤_第5张图片

你可能感兴趣的:(#,SpringMVC)