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打印成字符串所用的格式。
浙公网安备 33010602011771号