- MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
- 是将业务逻辑、数据、显示分离的方法来组织代码。
- MVC主要作用是降低了视图与业务逻辑间的双向偶合。
- MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。
-
web.xml
SpringMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 SpringMVC / encoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encoding / -
spring mvc-servlet.xml
-
相关依赖
spring-json 什么是jsonSpringMVC-study org.example 1.0-SNAPSHOT 4.0.0 SpringMVC-03-annotation src/main/java ***.xml false src/main/resources ***.xml false
-
JSON(Javascript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。
-
采用完全独立于编程语言的文本格式来存储和表示数据。
-
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
-
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json乱码解决方案 方案一方案二@RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")//使用RequestMapping的produces属性也可以解决乱码问题
两套注解//@RestController 相当于@Controller和@ResponseBody配合在一起使用 //@RestController也不会走视图解析器直接返回一个字符串 //或者直接使用@Controller
相关依赖
实体类SpringMVC-study org.example 1.0-SNAPSHOT 4.0.0 SpringMVC-05-json com.fasterxml.jackson.core jackson-databind 2.10.0 org.projectlombok lombok 1.18.20 com.fasterxml.jackson.core jackson-core 2.10.0
package com.zb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor //有参构造
@NoArgsConstructor//无参构造
public class User {
private String name;
private String sex;
private int age;
}
测试用例
package com.zb.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zb.pojo.User;
import com.zb.utils.JsonUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.SimpleFormatter;
//@RestController 相当于@Controller和@ResponseBody配合在一起使用
//@RestController也不会走视图解析器直接返回一个字符串
@Controller
public class UserController {
@RequestMapping("j1")
@ResponseBody//他就不会走视图解析器,会直接返回一个字符串
public String json1() throws JsonProcessingException {
//jackson ,ObjectMapper
ObjectMapper mapperapper = new ObjectMapper();
//创建一个对象
User user = new User("小波1号","男",18);
String str = mapperapper.writevalueAsString(user);
return str;
}
@RequestMapping("j2")
@ResponseBody
public String json2() throws JsonProcessingException {
List userList=new ArrayList();
ObjectMapper mapperapper = new ObjectMapper();
User user1 = new User("小波1号","男",18);
User user2 = new User("小波2号","男",18);
User user3 = new User("小波3号","男",18);
User user4 = new User("小波4号","男",18);
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
String str = mapperapper.writevalueAsString(userList);
return str;
}
@RequestMapping("j3")
@ResponseBody
public String json3() throws JsonProcessingException {
Date date = new Date();
ObjectMapper mapperapper = new ObjectMapper();
//自定义日期格式
SimpleDateFormat sfmat = new SimpleDateFormat("yyyy/mm/dd--HH:mm:ss");
//指定日期格式
mapperapper.setDateFormat(sfmat);
String str = mapperapper.writevalueAsString(date);
return str;
}
@RequestMapping("j4")
@ResponseBody
public String json4() throws JsonProcessingException {
Date date = new Date();
String json = JsonUtils.getJson(date);
return json;
}
}
将设置时间戳的方法封装(工具类)
package com.zb.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_DATES_AS_TIMESTAMPS, false);
//自定义日期格式对象
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
//指定日期格式
mapper.setDateFormat(sdf);
try {
return mapper.writevalueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}



