SpringMVC学习笔记-04-数据处理

处理提交数据:

①若提交的域名城和处理方法的参数名一致

提交数据:http://localhose:8080/hello?name=kanno

处理方法:

@RequestMapping("/hello")
public String hello(String name){
   System.out.println(name);
   return "hello";
}

②提交的域名和处理方法的参数不一致

提交数据:http://localhost:8080/hello?username=kanno

处理方法:

 

//@RequestParam("username") : username提交的域的名称 .
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name){
   System.out.println(name);
   return "hello";
}

 

③提交的是一个对象

要求提交的表单域和对象的属性名一致,参数使用对象即可

1.实体类

 

package com.kanno.controller;

import com.kanno.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/user")
public class UserController {

    //localhost:8080/user/t1?name=xxx;
    @GetMapping("/t1")
    public String test1(@RequestParam("username") String name, Model model){
        //1.接收前端参数
        System.out.println("接收到前端的参数为:"+name);
        //2.将返回的结果传递给前端,Model
        model.addAttribute("msg",name);
        //3.视图跳转
        return "hello";

    }

    /*
    1.接收前端用户传递的参数,判断参数的名字,假设名字直接在方法上,可以直接使用
    2.假设传递的是一个对象User,匹配User对象的字段名;如果名字一致则OK,否则,匹配不到
     */
    @GetMapping("/t2")
    public String test2(User user){

        return "hello";
    }

}

 

 提交JSON格式的数据

Controller返回JSON格式的数据

比较好的数据解析工具:Jackson、fastjson

以Jackson为例

首先在@Controller注解的类上添加@Respondbody注解,这样返回的信息不会经过视图解析器

然后添加Jackson依赖

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>

添加完毕依赖后在UserController下尝试返回一个类的信息和一个ObjectList的信息

@RequestMapping("/j1")
    //@ResponseBody
    public String json1() throws JsonProcessingException{

        //jackson,ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象
        User user = new User(1,"kanno",22);
        return mapper.writeValueAsString(user);
    }

    //返回一个数组
    @RequestMapping("/j2")
    public String json2() throws JsonProcessingException{
        ObjectMapper mapper = new ObjectMapper();
        User user1 = new User(1,"yijika",16);
        User user2 = new User(1,"nino",16);
        User user3 = new User(1,"miku",16);
        User user4 = new User(1,"yostuha",16);
        User user5 = new User(1,"yiziki",16);

        List<User> list1 = new ArrayList<User>();
        list1.add(user1);
        list1.add(user2);
        list1.add(user3);
        list1.add(user4);
        list1.add(user5);

        return mapper.writeValueAsString(list1);
    }
    @RequestMapping("/j3")
    public String json3() throws JsonProcessingException{
        ObjectMapper mapper = new ObjectMapper();
        Date date = new Date();
        return mapper.writeValueAsString(date);
    }

我们可以通过新建一个utils文件夹,并把JSON数据格式的处理整合到一个包内,写一个静态函数

package com.kanno.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import java.text.SimpleDateFormat;

public class JsonUtils {

    public static String getJson(Object object){
        return getJson(object,"yyyy-MM-dd HH:mm:ss");
    }

    public static String getJson(Object object,String dateFormat){
        ObjectMapper mapper = new ObjectMapper();
        //不使用时间戳的方式
        mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS,false);
        //自定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        mapper.setDateFormat(sdf);

        try{
            return mapper.writeValueAsString(object);
        }catch (JsonProcessingException e){
            e.printStackTrace();
        }
        return null;
    }
}

  JSON本身是JS打印成字符串所用的格式。

 

 

 

 

posted on 2021-03-26 11:05  KannoRi  阅读(90)  评论(0)    收藏  举报