Spring MVC(上)

简介: Spring MVC(上)

🌻1.什么是Spring MVC?


Spring MVC是一个基于Servlet API构建的Web框架,是一种基于MVC(模型-视图-控制器)模式的框架,用于构建Web应用程序。它是Spring框架的一部分,提供了一个容易扩展和灵活的方式来开发Web应用程序。

Spring MVC特性:

1.Spring MVC是一个Web框架

2.Spring MVC是基于Servlet api构建的


🍬1.1什么是MVC?

MVC,全称Model Version Controller,模型视图控制器,是一种软件架构模式

MVC执行流程

图片版本

文字版本

1.用户发出请求先到Controller

2.Comtroller把请求转发给Model层

3.Model处理请求并将数据返回给Controller

4.Controller继续转发数据给View

5.View将数据可视化返回给用户


Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据.

模型(Model):负责数据管理和业务逻辑,通常包括数据库操作、数据验证、数据转换等。

视图(View):负责呈现数据给用户,通常包括用户界面、报表、图表等。


🍬1.2MVC和Spring MVC的关系


MVC是一种思想,Spring MVC是MVC思想的具体实现


🌻2.Spring MVC的意义


⼤部分的 Java 项⽬都是基于 Spring(或 Spring Boot)的,Spring 的核⼼就是 SpringMVC,也就是说 Spring MVC 是 Spring 框架的核⼼模块,所以Spring MVC很重要


🍬2.1Spring MVC和Spring Boot区别



Spring MVC是Spring Framework的一部分,它是一个基于Servlet的Web框架,用于开发Web应用程序。它提供了一种按照模型-视图-控制器(MVC)模式来组织代码的方式,使得Web应用程序的开发更加灵活和可维护。在开发过程中,需要手动配置各种依赖项和设置。


Spring Boot是一个基于Spring Framework的快速开发框架,它的目的是简化Spring应用程序的开发、部署和运行。它提供了自动配置、约定优于配置(Convention over Configuration)和快速启动等功能,使得开发者无需手动配置和管理依赖项,只需添加所需的依赖项即可快速启动应用程序。


Spring Boot在某些方面比Spring MVC更加方便和简化,尤其是在快速开发和部署方面。但是,Spring MVC的灵活性更高,它可以更好地满足定制化需求


🌻3.Spring MVC的三大要点


连接功能:用户和服务器程序连接

获取参数:用户访问带的参数后端可以获取

返回数据:服务器处理好请求,返回给用户


🍬3.1Spring MVC创建和连接


🧊3.1.1 创建Spring MVC项目

Spring MVC项目就是基于Spring Boot项目多了一个Spring Web依赖


🧊3.1.2实现客户端和程序之间的连接


🍧3.1.2.1@RequestMapping,@PostMapping,@GetMapping


@RequestMapping既可以修饰类又可以修饰方法,一般来说方法是一定要加这个注解的,类可加可不加


package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-04
 * Time: 17:27
 */
@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/hi")
    public String sayHi(){
        return "hi ,spring mvc";
    }
}


运行结果

那么方法可以写多个路径吗?可以的

090bb6988f324c7b8451ab3f66693006.png

默认情况下@RequestMapping既支持get请求又支持post请求

我们来验证一下,这个时候就得请出我们的老朋友了postman


由此可见上述结论正确

那么如果想要一个post请求呢?

三种方法

🥝1.采用@RequestMapping("/xxx)

🥝2.@RequestMapping(value = “/xxx”,method = RequestMethod.POST)


 @RequestMapping(value = "/hii",method = RequestMethod.POST)
    public String sayhi2(){
        return "zezeze";
    }

method规定了请求的方法为post

这里的post请求是不支持get请求的,因为默认浏览器的URL都被封装为get请求

🥝3.@PostMapping(“/xxx”)


@PostMapping("/h")
    public String sayhi(){
        return "wyb";
    }


28f4c95e18d14030a1c422560dd78830.png

如果想要一个get请求呢?

  1. @RequestMapping(“/xxx”)

2.@RequestMapping(value=“/xxx”,method=RequestMethod.GET)_


 @RequestMapping(value = "/hiii",method = RequestMethod.GET)
    public String sayhi3(){
        return "zezeze";
    }

0d538464cf884585be7910aba269f4f6.png

3.@GetMapping(“/xxx”)


@GetMapping("/hello")
    public String saihi4(){
        return "who";
    }


6056804a26604c08a01c56610f39e59b.png

🍬3.2获取参数


🧊3.2.1获取单个参数


比如要获取姓名


package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-04
 * Time: 20:02
 */
@RestController
@RequestMapping("/u")
public class TestController2 {
    @RequestMapping("/h")
    public String getName(HttpServletRequest request){
        return "Name"+request.getParameter("name" );
    }
}

700eae3cd0f8467094c038c7d1103d25.png

296a2e01270740b0aa978cd4eef2b645.png

因为Spring MVC是基于servlet实现的,所以获取参数可以使用servlet的那一套方法获取,但是有了Spring MVC,就有了更简单的写法


package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-04
 * Time: 20:02
 */
@RestController
@RequestMapping("/u")
public class TestController2 {
    @RequestMapping("/h")
    public String getName(HttpServletRequest request){
        return "Name"+request.getParameter("name" );
    }
    @RequestMapping("/b")
    public String getName2(String name){
        return "Name"+name;
    }
}

d9eddf307c3f4612b35d3fdb557ed344.png

也是没有问题的

🧊3.2.2 获取多个参数

比如要获取姓名和年龄


@RequestMapping("/d")
    public String get(String name,Integer age){
        return "Name"+name+"Age"+age;
    }

88484f6a82cf427cb06e58b98d5fab76.png


🧊3.2.3 获取对象


package com.example.demo.controller;
import com.example.demo.model.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-04
 * Time: 20:21
 */
@RestController
@RequestMapping
public class UserController {
    @RequestMapping("/getUser")
    public User getUser(User user){
        return user;
    }
}

df3553e9f92d4ff28dd4caf5d0538dd7.png

啥都不传递的时候会发现都是该类型的默认值

现在进行传参

我们在浏览器拿到结果的时候发现一个问题

浏览器显示的是json对象,我们在后端没有手动的转换对象

在servlet阶段,我们需要使用jQuery的objectMappper对象的方法将Java对象转换为json字符串,然后返回给前端,现在有了框架,框架为我们自动转换为json格式返回给前端~~

如果返回的是HTML格式,就会直接返回成HTML,不会再自动转换

举个例子


 @RequestMapping("/html")
    public String html(){
        return "<h1>hello<h1>";
    }

7af6ba64034c4234b6bb75b97c141572.png


抓包看看

类型就是text/plain,也就是text/html

🧊3.2.4表单传递参数

采用postman 演示

b20b0dd30a1649c8b1d8dc0c6b51cfde.png


传递成功,后端返回的依然是json格式

相关文章
|
19天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
6天前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
2月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
2月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
2月前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
|
2月前
|
JSON 前端开发 Java
Spring MVC返回JSON数据
综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。
94 4
|
2月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
88 3
|
2月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
89 2
|
3月前
|
前端开发 Java 应用服务中间件
我以为我对Spring MVC很了解,直到我遇到了...
所有人都知道Spring MVC是是开发的,却鲜有人知道Spring MVC的理论基础来自于1978 年提出MVC模式的一个老头子,他就是Trygve Mikkjel Heyerdahl Reenskaug,挪威计算机科学家,名誉教授。Trygve Reenskaug的MVC架构思想早期用于图形用户界面(GUI) 的软件设计,他对MVC是这样解释的。MVC 被认为是解决用户控制大型复杂数据集问题的通用解决方案。最困难的部分是为不同的架构组件想出好的名字。模型-视图-编辑器是第一个。
115 1
我以为我对Spring MVC很了解,直到我遇到了...
|
3月前
|
前端开发 Java API
Spring Boot 中的 MVC 支持
### Spring Boot 注解摘要 - **@RestController** - **@RequestMapping** - **@PathVariable** - **@RequestParam** - **@RequestBody**
28 2
下一篇
无影云桌面