Spring Web MVC 是一种基于Java的实现Web MVC设计模式的请求驱动类型的轻量级Web框架。
业务模型 数据模型 实体,业务代码,数据代码
用于渲染数据,显示给客户
html jsp framemarker
主要用于接受参数,处理请求,返回结果
servlet controller
org.springframework
spring-context
5.1.9.RELEASE
org.springframework
spring-webmvc
5.1.9.RELEASE
...
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring_mvc.xml
springmvc
/
...
一个加上注解的普通Java类
@Controller
@RequestMapping(value = "/helloController")
//控制器
public class HelloController {
@RequestMapping("/sayHello")
public void sayHello(){
System.out.println("say hello");
}
@RequestMapping("/sayHi")
public void sayHi(){
System.out.println("say hi");
}
}
...
...
将项目部署在Tomcat上
输入路径:localhost/helloContorlle/sayHleeo
可以直接传参
public void sayHello(int id,@RequestParam("test") String name){
System.out.println(id);
System.out.println(name);
System.out.println("say hello");
}...
@RequestParam("test") 注解用于传递的参数名和方法的参数名不一致时
如果参数是一堆,会封装在对象中
@RequestMapping("/add")
// 将前端传过来的参数自动映射到实体中
//如果前端的是json格式对象 @RequestBody
public void add(CompanyDTO companyDTO){
System.out.println("添加方法");
System.out.println(companyDTO);
}
...
要求:传过来的参数名与实体中的属性名一致,才可以自动映射
一杠一值
简化了请求参数
对比:
get请求:/请求地址?id=1&name=admin
resultful请求:/请求路径/1/admin
在RequestMapping("/请求的地址/{id}/{name}")
@Controller
@RequestMapping("/restfulController")
public class RestfulController {
@RequestMapping("/test/{id}/{name}")
public void test(@PathVariable("id") int id,@PathVariable("name") String name){
System.out.println("id:"+id);
System.out.println("name:"+name);
}
}
...
http://localhost/restfulController/test/10/zhangsan
id:10
name:zhangsan
@DateTimeFormat
@DateTimeFormat 将前端传过来的参数(字符串)转换为日期对象
//将字符串转换为日期格式数据
@DateTimeFormat(pattern = "yyyy-MM-dd")...
@JsonFormat
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8")
//返回值中要将日期对象转换为字符串...
简写实体
对比:
以前的实体:需要自己添加setter,getter,tostring等方法
使用Lombok:只要加上@Data注解 就可以自动完成以上操作
只需要在pom.xml中添加依赖:
org.projectlombok
lombok
1.18.4
...
前后端分离后,一般返回JSON格式数据
步骤:
com.fasterxml.jackson.core
jackson-databind
2.9.8
...
//查询所有的公司列表
@RequestMapping("/list")
@ResponseBody //@ResponseBody 将结果转换为json格式
public List showAllCompanies(){
//返回的是一个集合 要把这个集合转换为json的数据格式
List companies = new ArrayList<>();
Company company1 = new Company();
company1.setId(1);
company1.setName("国信安");
company1.setLocation("云华路");
company1.setBuildDate("2009-10-01");
Company company2 = new Company();
company2.setId(2);
company2.setName("华为");
company2.setLocation("郫县");
company2.setBuildDate("2000-10-01");
companies.add(company1);
companies.add(company2);
return companies;
}
...
{
"code":0,
"msg":"查询成功",
"count":100,
"data":[
[{"id":1,"name":"国信安","location":"云华路","buildDate":"2009-10-01"}, {"id":2,"name":"华为","location":"郫县","buildDate":"2000-10-01"}]
]
}...
package com.gxa.util;
import lombok.Data;
import java.util.List;
@Data
public class ResutData {
private int code;
private String msg;
private int count;
private List data;
public static ResutData success(String msg,int count,List data){
ResutData resutData = new ResutData();
resutData.code = 0;
resutData.msg = msg;
resutData.count = count;
resutData.data = data;
return resutData;
}
public static ResutData error(String msg){
ResutData resutData = new ResutData();
resutData.code = 1;
resutData.msg = msg;
return resutData;
}
}
...