Spring Web MVC入门(1)(建立连接)

一.什么是Spring Web MVC?

        Spring Web MVC是基于ServletAPI构建的原始Web框架,从一开始就包含在Spring框架中.它的正式名称"Spring Web MVC"来自其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC".

二.MVC的定义

    MVC是Model View Controller的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为模型,视图和控制三个基本部分.

       

          View(视图):指在应用程序中专门用来与浏览器进行交互,展示数据的资源

          Model(模型):是应用程序的主体部分,用来处理程序中数据逻辑部分

          Controller(控制器):可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回到哪一个视图.即用来连接视图和模型.

三.什么是Spring MVC?

     MVC是一种架构设计模式,也是一种思想,而Spring MVC是对MVC思想的具体实现.除此之外,Spring MVC还是一个Web框架.

总结来说,Spring MVC是一个实现了MVC模式的Web框架

四.学习Spring MVC

   既然是Web框架,那么当用户下浏览器中输入url之后,我们的Spring MVC项目就可以感知到用户的请求,并给予响应.

  学习Spring MVC,重点也就是学习如何通过浏览器和用户程序进行交互.

主要分以下三个方面:

1.建立连接: 将用户(浏览器)和Java程序连接起来,也就是访问一个地址能够调用到我们的Spring程序.

2.请求: 用户请求的时候会带一些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能

3.响应: 执行了业务逻辑之后,要把程序执行的结果返回给用户,也就是响应.

1.建立连接

在Spring MVC中使用@RequestMapping来实现URL路由映射,也就是浏览器连接程序的作用

创建一个UserController类,实现用户通过浏览器和程序的交互,具体实现代码如下:

package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {//路由器规则注册@RequestMapping("/sayHi")public String sayHi() {return "hello Spring MVC";}
}

方法名和路径名称无需一致

接下来访问: http://127.0.0.1:8080/sayHi ,就可以返回数据了

(1).@RequestMapping 注解介绍

@RequestMapping是Spring Web MVC应用程序中最常被用到的注解之一,它是用来注册接口的路由映射的.

表示服务器收到请求时,路径为/sayHi的请求就会调用sayHi这个方法的代码.

路由映射: 当用户访问一个URL时,将用户的请求对应到程序中某个类的方法的过程就叫路由映射.

(2).@RequestMapping 使用

@RequestMapping 既可以修饰类,也可以修饰方法,当修饰类和方法时,访问的地址是类路径+方法路径.

@RequestMapping标识一个类: 设置映射请求的请求路径的初始信息

@RequestMapping标识一个方法: 设置映射请求的请求路径的具体信息

@RequestMapping("/User")
@RestController
public class UserController {@RequestMapping("/sayHi")public String sayHi() {return "hello Spring MVC";}
}

访问地址: http://127.0.0.1:8080/User/sayHi

注意: @RequestMapping 的URL路径最前面加不加/都可以,Spring程序启动时,会进行判断,如果前面没加/,Spring会拼接上一个/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迅狐矩阵系统:一键式剪辑神器,引领矩阵运营新潮流!

在数字化浪潮汹涌的当下,视频内容已经成为人们获取信息、娱乐休闲的重要方式。然而,面对海量的视频素材和日益增长的用户需求,如何高效、高质量地剪辑和分发视频内容,成为了摆在众多内容创作者和运营团队面前的难题。幸运的是&…

MySQL 日志深度解析:从查询执行到性能优化

引言 MySQL 日志是数据库管理员和开发者的宝贵资源,它提供了查询执行的详细情况,帮助我们诊断问题和优化性能。本文将深入分析一个具体的 MySQL 日志条目,解释其含义,并提供针对性的优化建议。 日志信息概览 让我们先来快速了解…

【单片机毕业设计选题24053】-基于单片机的WiFi控制门禁系统设计

系统功能: 系统上电后OLED显示智能门禁系统 Door:xxxxxx 初始化ESP8266完成后显示 Door:Closed 短按按键SW4可打开电磁锁OLED显示Door:Open,约五秒后电磁锁自动关闭OLED 显示Door:Closed 根据“TCP调试助手使用说明”操作, 在调试助手界面发送Open后…

商城源码从哪里找

商城源码可以从多个渠道获取,具体包括开源平台、专门的商城系统提供商、代码分享网站等。不同的渠道可能适合不同的需求和技术水平。下面将详细分析各个渠道的特点及优缺点: 开源平台 Gitee:Gitee是一个知名的代码托管平台,提供…

【VUE基础】VUE3第五节—核心语法之ref标签、props

ref标签 作用&#xff1a;用于注册模板引用。 用在普通DOM标签上&#xff0c;获取的是DOM节点。 用在组件标签上&#xff0c;获取的是组件实例对象。 用在普通DOM标签上&#xff1a; <template><div class"person"><h1 ref"title1">…

RDNet实战:使用RDNet实现图像分类任务(一)

论文提出的模型主要基于对传统DenseNet架构的改进和复兴&#xff0c;通过一系列创新设计&#xff0c;旨在提升模型性能并优化其计算效率&#xff0c;提出了RDNet模型。该模型的主要特点和改进点&#xff1a; 1. 强调并优化连接操作&#xff08;Concatenation&#xff09; 论文…

CF328A IQ Test 题解

思路 依题意模拟即可。 注意要保证是整数。 代码 #include<bits/stdc.h> #include<cstring> #include<queue> #include<set> #include<stack> #include<vector> #include<map> #define ll long long #define lhs printf("\n…

kotlin flow collect collectLatest 区别

在 Kotlin 协程库中&#xff0c;collect 和 collectLatest 都是用于收集 Flow 中发射的数据的方法&#xff0c;但它们在处理数据和响应新数据的方式上有所不同。 collect collect 是一个挂起函数&#xff0c;用于收集 Flow 中发射的所有数据。它会按顺序处理每一个发射的数据…

UML图书管理系统用例图示例

新书速览|《UML 2.5基础、建模与设计实践》新书速览|《UML 2.5基础、建模与设计实践 【例4.4】图书管理系统用例图。 图书管理系统按其业务功能分成借阅者管理、图书管理、借书、还书和用户管理等几部分&#xff0c;这些职能对应于系统的不同组织部门。 1&#xff09;系统参…

echarts 中国地图json文件

阿里云地理网址 DataV.GeoAtlas地理小工具系列 (aliyun.com) 地图cp 修改参考 {"type": "FeatureCollection","features": [{"type": "Feature","properties": { "id": "65", "size&…

Actor-Critic 算法

在强化学习&#xff08;Reinforcement Learning, RL&#xff09;中&#xff0c;Actor-Critic 算法是一类强大的策略梯度方法&#xff0c;结合了策略&#xff08;Policy&#xff09;和价值函数&#xff08;Value Function&#xff09;两种方法的优点。本文将详细介绍 Actor-Crit…

[TypeScript]手撸LFU

[TypeScript]手撸LFU 最近做笔试的时候遇到了要手撸LFU的题目&#xff0c;LFU在vue源码里还是有使用的&#xff0c;例如keep-alive的实现机制就是基于它来搞的。不多说了&#xff0c;直接上代码。 代码 // 双向链表node class DoubleLinkNode {key: number;val: number;freq…

阿一课代表今日分享之使用dnscat2 进行dns隧道反弹shell(直连模式linux对linux)

DNS介绍 DNS是域名系统(Domain Name System)的缩写&#xff0c;是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP数串。 DNS的记录类型有很多&a…

归并排序算法Python实现

归并排序原理和步骤 1. 将数组分成两半&#xff0c;直到每个子数组的长度为1 首先&#xff0c;将数组分成两半。如果数组的长度大于1&#xff0c;将其从中间分割为两个子数组。对每个子数组继续进行这个过程&#xff0c;直到每个子数组的长度为1。此时&#xff0c;所有子数组…

L4 Persistence and Streaming

参考自https://www.deeplearning.ai/short-courses/ai-agents-in-langgraph&#xff0c;以下为代码的实现。 这里主要是加入了memory&#xff0c;这样通过self.graph graph.compile(checkpointercheckpointer)就可以加入持久性的检查点通过thread {"configurable"…

项目实战--Spring Boot + GraphQL实现实时数据推送

背景 用户体验不断提升而3对实时数据的需求日益增长&#xff0c;传统的数据获取方式无法满足实时数据的即时性和个性化需求。 GraphQL作为新兴的API查询语言&#xff0c;提供更加灵活、高效的数据获取方案。结合Spring Boot作为后端框架&#xff0c;利用GraphQL实现实时数据推…

Java笔试|面试 —— 对多态性的理解

谈谈对多态性的理解&#xff1a; 一个事物的多种形态&#xff08;编译和运行时状态不一致性&#xff09; 实现机制&#xff1a;通过继承、重写和向上转型&#xff08;Object obj new 子类()&#xff09;来实现。 1.广义上的理解 子类对象的多态性&#xff0c;方法的重写&am…

visual studio 2022 在使用open3d出现的问题及解决方式

当出现以下问题&#xff1a; 使用open3d::utility::LogInfo系列出现LNK2001问题&#xff0c;如下所示&#xff1a;LNK2001 无法解析的外部符号 “char __cdecl fmt::v6::internal::decimal_point_impl(class fmt::v6::internal::locale_ref)” LNK2001 无法解析的外部符号 “p…

【C/C++】SDKDDKVer.h和WinSDKVer.h详解及二者区别

一.SDKDDKVer.h介绍 SDKDDKVer.h 是一个在 Windows 软件开发中常见的头文件&#xff0c;它用于定义软件开发工具包&#xff08;SDK&#xff09;和驱动开发工具包&#xff08;DDK&#xff09;的版本信息。这个文件通常位于 Visual Studio 安装目录下的 Include 子目录中。 …

GD32MCU如何实现掉电数据保存?

大家在GD32 MCU应用时&#xff0c;是否会碰到以下应用需求&#xff1a;希望在MCU掉电时保存一定的数据或标志&#xff0c;用以记录一些关键的数据。 以GD32E103为例&#xff0c;数据的存储介质可以选择内部Flash或者备份数据寄存器。 如下图所示&#xff0c;片内Flash具有10年…