【学习分享】spring mvc的入门使用

主流后端架构模型mvc架构

在这里插入图片描述

上图是mvc架构模型,后端编码会把事件处理分为controller、model、view三层

  • contaller 是控制器处理响应业务前的基本处理、例如调度model、分发请求
  • model 是业务处理模型层负责业务逻辑,包含servicer业务处理、dao数据持久化
  • view 是响应处理层它处理model的响应结果将响应通过view层返回给contaller,相当与中间人

spring对于MVC架构的实现

通过阿里巴巴的spring boot 脚手架实现 https://start.aliyun.com/

添加spring mvc依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

实现数据持久化 添加mybatis plus的依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

还要添加数据库驱动及jdbc依赖这里不演示了

完成后创建如下包

在这里插入图片描述

这里假设我要做一个api接口,对于view层其实是在contaller中完成

先写一个controller作为演示 ,先不涉及model的交互

/**
 * 演示controller
 */
@Controller
@RequestMapping("/demo")
public class DemoController {

    @ResponseBody
    @RequestMapping(value = "/demo1",method = RequestMethod.GET)
    public String demo1() {
        return "demo1";
    }
}

在这里插入图片描述

访问后出现demo1 我们此时已经完成controller的简单搭建细说下代码

  • @Controller 注解,表明这个类是一个controller他会在启动时自动注册为一个bean
  • @RequestMapping 在类上表明这个类的uri访问路径为"/demo"
  • @RequestMapping 在方法上表明这个方法的uri访问路径为"/demo1" ,method限定了请求方法为GET
  • @ResponseBody 会把返回结果序列化添加到Response的body中会调用mvc自己的json解析器
  • 其实这里可以把@Controller 替换为 @RestController,同时配套@GetMapping、@PostMapping等注解,不用再使用@ResponseBody

交互使用model层

这里不再推荐使用字段注解注向Controller 注入service 因为会出现service构建失败出现null的场景

使用构造函数注入

先创建一个service 并实现它

package com.example.demo.service;

public interface IDemoService {

    String doSomething();
}
package com.example.demo.service.impl;

import com.example.demo.service.IDemoService;
import org.springframework.stereotype.Service;

@Service
public class DemoServiceImpl implements IDemoService {
    @Override
    public String doSomething() {
        return "漠北银虎";
    }
}

修改controller

package com.example.demo.controller;

import com.example.demo.service.IDemoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 演示controller
 */
@Controller
@RequestMapping("/demo")
public class DemoController {

    private IDemoService demoService;

    public DemoController(IDemoService demoService) {
        this.demoService = demoService;
    }

    @ResponseBody
    @RequestMapping(value = "/demo1",method = RequestMethod.GET)
    public String demo1() {
        return demoService.doSomething();
    }
}

重启后再次访问

在这里插入图片描述

已经返回了我们service中的返回值

  • @Service 注解说明该类是一个service 启动时会字自动注入一个bean
  • 在Controller注入IDemoService接口会自动注入它的实现类DemoServiceImpl,假如IDemoService有多个实现类呢???后面再说

至此你已经学会了基本的spring mvc的使用,别急啊~还有很多相关知识在本章不讲这章只做入门

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值