浅谈SpringMVC

IOC:交给Spring创建对象并进行管理
DI:依赖注入

SpringMVC

SpringMVC框架基于Spring框架之上的
主要解决后端服务器接收客户端提交的请求,并给予响应的相关问题
MVC = Model + View + Controller
Model:数据模型 ,通常是由业务逻辑层和数据访问层构成
View:视图
Controller:控制器

MVC:为项目中代码的职责进行划分

在这里插入图片描述
实现流程:
用户发送请求至前端控制器DispatcherServlet

DispatcherServlet收到请求调用HandlerMapping处理器映射器。

处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

执行处理器(Controller,也叫后端控制器)。

Controller执行完成返回ModelAndView

HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

DispatcherServlet将ModelAndView传给ViewResolver视图解析器

ViewResolver解析后返回具体View

DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

DispatcherServlet响应用户

SpringMVC作用:解决了接收请求、相应结果的相关问题

开发流程:

1.依赖项(Spring项目)+ spring-boot-starter-web(包含spring-boot-starter)
2.添加Controller

package com.aries.spring.serve.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Author 丁少珩
 * @Date 2022 07 16 20 06
 **/
//添加@Controller注解才会被框架视为控制器,才可以用于接收请求,响应结果
@Controller

public class DemoController {

    //自定义请求的方法
    //添加@RequestMapping系列注解:配置"请求路径"与"控制器的方法"的映射关系
    //方法的返回值是String类型,返回值表示“视图”名称(不是前后端分离项目),
    @RequestMapping("/delete-demo")
    // 当使用“响应正文”模式后,返回的字符串将作为“正文”响应到客户端(是前后端分离项目)
    //@ResponseBody将java对象转换成JSON格式的数据
    /*json数据
    {
        "name":"lisi",
        "age":16
    }
    json对象
    {
        name:"lisi",
        age:16
    }*/
    @ResponseBody
    public String delete(){
        System.out.println("DemoController.delete");
        return "del";
    }

}

怎么判断注解应放在什么位置,例注解@RequestMapping
3、注解@RequestMapping
我们打开源码进行查看
在这里插入图片描述
4.请求方式:
@RequestMapping注解中,还有method属性,可以限制请求方式(GET / POST等),其语法大概是:

@RequestMapping(value = "/add-new", method = RequestMethod.POST)

以上配置表示“只允许使用POST方式提交请求”,如果使用其它请求方式,将出现405错误!

在Spring MVC框架中,定义一系列的限制请求方式的注解,例如:

  • @GetMapping:将请求方式限制为GET,除了不能添加在类上,其它用法与@RequestMapping相同
  • @PostMapping:将请求方式限制为POST,除了不能添加在类上,其它用法与@RequestMapping相同
  • 其它

在开发实践中,控制器类上使用@RequestMapping,在方法上使用@GetMapping@PostMapping
通常,以“获取数据”为主要目的的请求应该使用@GetMapping(例如查看订单列表、查看商品详情),否则,使用@PostMapping
在学习过程中,在没有调试手段之前,推荐全部@RequestMapping,以便于测试访问。在这里插入图片描述

@RestController
@RequestMapping(value = "/demos",method = RequestMethod.POST)
public class DemoController {

    @RequestMapping("/list")
    public String list(){
        System.out.println("DemoController.list");
        return "list-demo";
    }

    //自定义请求的方法
    //添加@RequestMapping系列注解:配置"请求路径"与"控制器的方法"的映射关系
    //方法的返回值是String类型,返回值表示“视图”名称(不是前后端分离项目),
    @RequestMapping("/delete")
    // 当使用“响应正文”模式后,返回的字符串将作为“正文”响应到客户端(是前后端分离项目)
    /*json数据
    {
        "name":"lisi",
        "age":16
    }
    json对象
    {
        name:"lisi",
        age:16
    }*/
    public String delete(){
        System.out.println("DemoController.delete");
        return "del";
    }

}

在这里插入图片描述

关于POJO规范

所有的POJO类型都应该符合以下设计标准:

  • 所有属性都是私有的(private
  • 每个属性都有对应的、命名规范的Setter & Getter
    • 通过专业的开发工具生成即可
  • 应该生成hashCode()equals()方法,且保证:2个对象中所有属性值都相同时,返回相同的hashCode(),且这2个对象的equals()对比结果为true
    • 通过专业的开发工具生成即可
    • 通过IntelliJ IDEA生成时,还有多种代码模版可选择,选择任何一个模版均可
  • 实现序列化接口(Serializable
    • 可以不生成序列化版本ID

以上规范是业内共同认可的,且认为你都会按此规范来编码,所以,许多框架都会自动调用其中的Setter & Getter方式,甚至会使用Serializable来声明你的对象。

关于pojo类的命名
阿里巴巴的建议:
数据对象: ***DO ***表示表名
DO: Data Object
数据传输对象: ***DTO ***表示业务相关的名称
DTO: Data Transfer Object
展示对象: ***VO ***表示网页名称
VO: View Object
VO: Value Object

POJO:是DO/DTO/VO统称,禁止命名:***POJO

RESTful (设计风格 – 并不是规范或标准)
表现:将id或者类似具有”唯一性“的参数值作为URL的一部分,而不像传统方式参数体现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值