SpringMVC复习

MVC设计模式

用来进行分层结构,这样代码分离结构清晰,各层代码,各司其职,易于开发大型项目

MVC(Model模型、View视图、Control控制层),将软件进行分层达到松耦合的效果,应该保证上面这三部分相互独立,互不干扰,每一个部分只负责自己擅长的部分,实现程序间的松耦合、提高代码复用性。

SpringMVC是基于MVC设计模式来实现的。

POJO类就是Model层,JSP就是视图层,Controller就是控制层

现在主流的SSM三大框架开发都是在MVC上继续演化,又分为持久层DAO,业务层Service,控制层Controller。持久层用来和数据库读写ORM,业务层用来处理复杂的业务逻辑,控制层用来处理MVC的控制。

SpringMVC的工作原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XH0fEJst-1623044111711)(RackMultipart20210607-4-13lyxac_html_e58ee630c0df1991.png)]

 过程描述

  1. 客户端发送请求
  2.  前端控制器(DispatcherServlet)接受客户端请求
  3. 找到处理器映射器(HandlerMapping)解析请求对应的 Handler ;
  4. 处理器适配器(HandlerAdapter)会根据 Handler 来调用真正的处理器开处理请求,并处理相应的业务逻辑 ;
  5. 处理器返回一个模型视图 ModelAndView ;
  6. 视图解析器(ViewReslover)进行解析 ;
  7. 返回一个视图对象  ;
  8. 前端控制器(DispatcherServlet)渲染数据(Moder);
  9. 将得到视图对象返回给用户.。

案例

需求:

访问链接: http://localhost:8080/car/get

得到JSON数据: {"id":718,"name":"保时捷","type":"Cayman T","color":"红色","price":641000.0}

1.创建启动类

package cn.tedu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;


@SpringBootApplication
@Controller
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }
}

2.创建POJO类

@Data  
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Car{
    private Integer id;
    private String name;
    private String type;
    private String color;
    private Double price;
}

3.创建Controller类

package cn.tedu.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.tedu.pojo.Car;

@RestController
@RequestMapping("/car")
public class CarController {
	@RequestMapping("/get")
	public Car get() {
		//保时捷718 Cayman T,红色,641000元起
		Car car = new Car();
		car.setId(718);
		car.setName("保时捷");
		car.setType("Cayman T");
		car.setColor("红色");
		car.setPrice(641000.0);
		
		return car;
	}
}

测试结果

{"id":718,"name":"保时捷","type":"Cayman T","color":"红色","price":641000.0}

@PathVariable注解的用法

        后端服务器接收规则:
          1.参数与参数之后使用  /  分隔
          2.参数的位置一旦确定,一般不变.
          3.接收的参数使用 {形参变量}
          4.使用@PathVariable 接收
          5.如果参数有多个建议使用对象接收  参数必须与属性一致,SpringMVC自动封装
      注意事项: 如果名称不统一,则需要转化 具体如下:
                      @PathVariable("name") String username

//优化GET传参的restful方式
		//GET方式访问: http://localhost:8080/car/insert?id=1&name=张三&age=18
		//RESTFul方式访问: http://localhost:8080/car/insert/1/张三/18
	@RequestMapping("insert/{id}/{name}/{age}")
//RESTFul配合@PathVariable注解一起用,使用{资源名}获取传过来的值
	public void insert(@PathVariable int id,
						@PathVariable String name,
						@PathVariable int age) {
		System.out.println("数据插入成功,id="+id+",name="+name+",age="+age);
	}

RESTFul参数接收

RestFul介绍

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
定义: RESTFul 是一种请求的规则(语法/定义)

RESTFul说明

优化前:

Get请求: http://localhost:8090/findUserByNS?name=王昭君&sex=女

特点:

1.查询请求
2.参数直观 name=xxx
3.请求的结构冗余. 不合适多个参数的写法.

优化后:

http://localhost:8080/user/王昭君/女

优势:

1. 用户不能了解请求的意图 规定:请求方法名称不能出现 “动词”,只能写名词.
2. 参数保密, 只有后端服务器清楚参数的意义.
3. 请求字节传输量少 简洁.

注意事项:

1. URL地址中参数与参数之间使用 / 分隔.
2. 请求的参数的位置一旦固定,不可轻易修改.
3. 用户发请求时,就应该按照restFul的结构执行.
4. RESTFul请求一般以get请求为主.   (put/delete/post)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值