时Spring团队的产品,遵循MVC设计模式
MVC设计模式:
M是Model时模型层,用来封装数据
V是View,是视图层,用来展示数据
C是Controller是控制层,接受浏览器发来的请求,并做出数据的响应
SpringMVC框架用来接收请求+做出响应
浏览器发送数据给服务器有两种方式:get和post
get的数据,在地址栏展示,用?拼接的参数
post的数据,不在地址栏展示,安全性较高
涉及五个组件:
1.前段控制器 DispatcherServlet 接受请求,并且调度
2.处理器映射器 HandlerMapping:根据地址栏的写法,找到能处理这次请求的类和方法
3.处理器适配器HandlerAdapter:真正开始找到方法,执行方法体处理业务,并返回结果()
4.视图解析器ViewResolver:找到能够展示数据的页面
5.视图渲染View:把数据展示在页面上
1,导入SpringMVC相关的jar包(被Springboot整合了) 2, 使用注解开发
创建maven module右键-new -Module-选择Maven-next-设置module name-finish
准备启动类package cn.tedu.mvc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//启动类,用来启动Module
public class RunApp {
public static void main(String[] args) {
//利用springboot启动当前类
SpringApplication.run(RunApp.class);
}
}
准备资源
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//springmvc框架核心:接受请求
public class CarController {
//规定浏览器用什么规则访问资源
@RequestMapping("get")
public String get(){
return "欢迎~";
}
}
测试
http://localhost:8080/car/get
SpringMVC解析get方式的请求参数 测试package cn.tedu.mvc;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//springmvc框架核心:接受请求
@RequestMapping("car")//规定浏览器用什么规则访问资源
public class CarController {
//http://localhost:8080/car/get
@RequestMapping("get")//规定浏览器用什么规则访问资源
public String get(){
return "欢迎~";//直接把结果返回给浏览器展示
}
//携带着请求参数: http://localhost:8080/car/insert?id=666
//要求:如果方法有参数,调用时必须传入参数,否则500报错
//要求:参数列表里分为参数类型(参考地址栏里的参数的类型666)
// 参数名(参考地址栏里的参数名id)
@RequestMapping("insert")
public void insert(Integer id){
System.out.println(id);
}
//http://localhost:8080/car/save?id=666&price=9.9
@RequestMapping("save")
public String save(int id,String name,double price){
return id+name+price ;//给浏览器返回数据做展示
}
//http://localhost:8080/car/find?id=666&name=BMW&price=9.9&color=red
@RequestMapping("find")
//问题:想要解析很多请求参数太时,方法的参数列表太长...
//public String find(Integer id,String name,Double price,String color){
public Car find(Car a){
return a;//把a值的返回给浏览器
}
}
总结
RestFul数据的解析
测试
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("student")
public class StudentController {
//get方式:http://localhost:8080/student/save?id=666&name=jack&age=20
@RequestMapping("save")
public String save(Integer id,String name,Integer age){
return id+name+age;
}
//restful方式:http://localhost:8080/student/save2/666/jack/20
@RequestMapping("save2/{id}/{name}/{age}")
//{id}用来获取地址栏中的数据,并交给id变量保存--专门用来获取restful方式提交的数据
public String save2(@PathVariable Integer id,
//@PathVariable用来绑定地址栏里声明的变量的值,并交给同名变量保存
@PathVariable String name,
@PathVariable Integer age){
return id+name+age;
}
}



