SpringMVC(1)

news2024/9/19 21:18:37

Web项目:基于HTTP协议,当一个用户从浏览器上面输入URL地址之后,URL能够和我们的程序映射起来,可以让用户的请求触达到后端程序里面,并且根据程序的处理,把结果返回浏览器;

Spring MVC要进行学习的内容:

1)连接的功能:将用户浏览器和Java程序进行连接起来,也就是说访问一个url地址可以调用到我们的Spring程序,能够匹配到相应的方法,实现用户到程序的映射;

2)获取参数:用户访问的时候会带一些参数,要想办法在程序中获取到这些参数,表单文件,Header里面的参数,服务器端要获取到用户的请求参数;

3)输出数据的功能:执行了业务逻辑之后,服务器端要把程序执行的结果返回给用户前端

Spring框架是一个大的体系,SpringWebMVC只是Spring体系中的一个WEB模块,之前在去学习Spring的时候,是没有通过浏览器来访问我们的Spring程序的,而是通过Application中的main方法去执行Spring框架的,因为之前创建的是一个SpringCore项目,不是一个SpringWEBMVC项目,就不可以通过浏览器访问;

SpringWebMVC

Spring和SpringMVC诞生的历史比较久远,在他们之后才有SpringBoot

1)SpringMVC框架是基于ServletAPI和MVC设计思想构建的原始Web框架,但是从一开始就包含在Spring框架里面,Spring框架是一个大的体系,Spring MVC只是属于Spring这个体系的Web框架模块SpringMVC其实就是Spring中的一个模块,主要处理Web开发的路径映射和视图渲染,属于Spring框架中Web层开发的一部分;

2)SpringBoot脚手架是为了快速开发Spring框架而诞生的一种框架一种技术,就是为了让大家用Spring用的比较爽的一个框架,就是一个壳,核心还是开发Spring,SpringBoot是spring提供的一个快速开发工具包,让程序员能更方便、更快速的开发spring和springmvc应用,简化了配置约定了默认配置,是最后诞生的,出生比较晚,有单独创建框架的一种模式;

3)我们既可以根据Spring创建一个Spring Core项目,也是可以根据Spring创建一个Spring Web项目;

4)他的全称为Spring Web MVC是基于Servlet API构建的原始Web框架,但是他一开始就包含在Spring框架里面,是SpringBoot的一个WEB模块,Spring MVC是一个Web框架,Spring MVC是基于Servlet API进行实现的,MVC和SpringMVC的关系就类似于IOC和DI的关系;

5)我们在进行创建SpringBoot项目的时候,我们进行勾选的Spring Web选项其实就是Spring MVC框架,我们可以看到从pom.xml里面就可以看到spring-boot-starter-web

我们加上Spring Boot DevTools是为了可以完成热部署的;

1)SpringMVC是一个基于MVC设计模式思想和ServletAPI接口实现的一个web框架,同时SpringMVC又是Spring框架中的一个web模块,是随着Spring的诞生而存在的一个Web框架

2)现在市面上面的绝大多数Spring项目都是基于SpringBoot,通过自己创建的main方法启动一个Spring框架或者是SpringCore项目,而Spring的核心就是SpringMVC,所以说SpringMVC的项目是基于SpringBoot来进行更简便的开发的,我们基于Spring Boot框架添加一个Spring Web依赖,此时的项目就变成了Spring MVC项目;

3)MVC架构分层的主要作用是解耦,采用分层架构的好处,普遍接受的是系统分层有利于系统的维护,系统的扩展,就是增强系统的可维护性和可扩展性;

 

MVC通常是Model View Controller,它是软件工程中的一种常见的设计模式,他把软件项目分为模型,视图和控制器三个部分

1)控制器(Controller):通常是应用程序中用来处理用户交互的部分,并向数据模型层发送数据,类似于保安,验证用户合法性和用户传递参数合法性,因为模型层把结果数据传输给Controller层之后,Controller层是不可以直接把从数据库查询出的数据传输给用户的,因为浏览器看不懂,要把数据传输给服务器端的视图层;

2)模型(Model):是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存储数据和拉取数据,调用数据库;

3)视图(View):是应用程序中用于处理数据显示的部分,当Controller把数据传送到视图层的时候,这里面是服务器端的视图会将数据和服务器端的模板,叫做显示层,主要是显示数据,把浏览器能够解析的html返回给客户端;

服务器端的模板:模板引擎和JSP;

4)Controller在收到模型层处理完的用户数据之后,会直接将数据发送给视图层,咱们的视图层会将数据和服务器端的模板(JSP,摸板引擎,HTML)结合,会将数据加上服务器端的模板,就比如说v-for,循环渲染之后,再把最终整合成的标签,比如说三个h1返回给客户端的视图,客户端的视图在进行拼接v-for分解之后和渲染然后展示在浏览器上面,这样就可以保证用户拿到看到的数据是经过服务器端执行和渲染之后的一个结果了

视图分为两种:一种是服务器端的视图(v-for),一种是客户端的视图(浏览器直接解析)

1)MVC是一种思想,Spring MVC是一个专门的技术实现手段框架和是对MVC思想的实现,是一种MVC模式,并继承了Servlet API的WEB框架,既然是WEB框架,那么用户在浏览器上面输入了url之后,我们的SpringMVC框架就可以进行感知用户的请求;

在application.properties写上这段代码:debug=true;

2)路由映射:就是当用户访问一个url的时候,将用户的某个请求对应到程序中的某个类的某个方法的过程中就叫做路由映射;

3)现在绝大多数的项目都是基于Spring项目的,而Spring的核心就是SpringMVC,也就是说SpringMVC框架是Spring框架的核心模块,而SpringBoot又是Spring的脚手架,因此现在市面上面的JAVA项目就等同于SpringMVC项目;

4)SpringMVC项目可以是基于SpringBoot创建,也就是创建一个SpringBoot项目,勾选上SpringWEB项目,这时就从一个普通的SpringBoot项目变成了WEB项目,就是类似于maven项目变成了Servlet项目;

5)SpringMVC项目创建:基于SpringBoot框架加上一个SpringWEB也就是SpringMVC依赖,此时项目就变成了SpringMVC项目;

一)实现程序到用户之间的映射: 

输入一个127.0.0.1:8080/Java200就可以访问这个页面

我们在Main目录下的resorces的static里面创建了一个html文件下面我们来改一下后端代码:

在浏览器上面输入:http://localhost:8080/java200这个地址就可以访问到Text.html这个页面了

 

1)@RequestMappering的作用就是用来注册一个URL路由,通过这个路由,就可以进行实现前端的请求和后端程序的交互了但是@RequestMappering这个注解实际可以修饰方法也是可以修饰类的@RequestMapping和@ResponseBody注解既是可以修饰类也是可以修饰方法的

 2)我们在默认情况下使用@RequestMappering会返回一个html静态界面,但是加上

@RsponseBody就会返回一个非页面的数据了,而不是返回的是一个页面地址

3)当我们使用@RequestBody来进行修饰一个类的时候,这就表示当前类中的所有方法会返回一个非页面的数据

4)同样我们还可以进行指定发送请求的类型:

@RequestMapping(value="/Java200",method= RequestMethod.GET)
如果说我们在Postman上面发送了一个POST请求,就会出现405的报错信息
Controller
public class UserController {
    @RequestMapping(value="/Java",method=RequestMethod.GET)
    @ResponseBody
    public String start(String name)
    {
     return name+"要你管";
    }
}

5)@RequestMappering在不进行指定任何参数的情况下,只进行设置路由地址,那么此方法是即支持GET请求又是支持POST请求的,但是当我们给@RequestMapping设置了Method属性之后,那么它只能支持设置的请求类型,其他类型时会报错的(405)

6)我们可以通过更详细的注解比如说@GetMapping(指定路由地址)和@PostMapping(指定路由地址)来进行决定访问那一个方法;

为什么RequestMapping默认情况下会返回一个静态页面呢?

这还是历史的原因,因为SpringMVC是和Spring一起创建起来的,Spring,2002年创建的,20年前开发是前后端部分里的时间段,JAVA程序员既要写后端代码也要写前端的一个页面,模板引擎用的非常多,返回的一定是静态页面;但是在今天,格局已经变了,我们是可以返回一个数据了,@ResponseBody返回的是一个非静态页面的数据了;

1)@RequestMapping:支持任意一种请求类型(get/post),既能修饰方法又是可以修饰类的

2)@GetMapping:只是支持get方式的请求(不能修饰类)

3)@PostMapping:只是支持post方式的请求(不能修饰类)

下面的这两种方法只能修饰方法,是不可以进行修饰类的

SpringBoot热加载进行配置,每一次修改Idea代码的时候不需要进行重启运行,每一次我进行修改源代码的时候,都会实时编译.class文件,会自动重启SpringBoot项目;

1)在SpringBoot项目的POM.XML里面引入Spring dev-Tools框架,引入框架,检测当前项目有没有修改原代码

2)在Setting里面开启项目自动编译,众所周知咱们的Idea是由两个Settings,一个就是叫做Settings,一个就是叫做new ProjectSettings,一个是针对当前项目,一个是针对以后new出来的新项目

打开settings,点击Bulid里面的Compiler进行选中

3)点击选择按钮:Build project automatically,选中项目自动编译

开启程序运行的热部署:

4)点击全局搜索,按两下shift就可以了,然后在搜索框里面进行搜索reg,得到选项Registry,然后进行双击下面这个东西,就可以了

compiler.automake.allow.when.app.running

进行选中

5)点击程序运行debug按钮就可以开启热部署;

 

 

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

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

相关文章

三分钟学习 Gitee OpenAPI

文章目录1 什么是 Gitee Open API ?2 如何操作Open API ?2.1 申请私人令牌2.2 发起网络请求3 其他Git Open API3.1 Github Open API3.2 Gitlab OpenAPI1 什么是 Gitee Open API ? 简单说就是 网络请求 Open API 让我们可以通过网络请求的方式对 Git仓库的 分支&#xff0…

LinkedList与链表(数据结构系列5)

目录 前言: 1.链表的概念以及分类 1.1链表的概念 1.2分类 1.2.1单向和双向 1.2.2循环和非循环 1.2.3带头和不带头 2.无头单链表的模拟实现 3.双向链表的模拟实现 4.LinkedList的简单介绍 5.LinkedList的遍历 5.1直接打印 5.2for-each遍历 5.3迭代器遍历…

【Vercel】教你部署imsyy/home个人主页

本篇博客教你如何部署一个自己的个人主页 项目地址:https://github.com/imsyy/home 本文首发于 慕雪的寒舍 1.fork仓库vercel部署 首先我们点击fork,将仓库复刻到自己的账户 随后进入vercel,点击dashboard-add new-project 选择你复刻的仓库…

我的Android开发【分代收集算法】

为什么要采用分代收集算法? 分代的垃圾回收策略,是基于这样⼀个事实:不同的对象的⽣命周期是不⼀样的。因此,不同⽣命周期的对象可以采取不同的收集⽅式,以便提⾼回收效率。在 Java 程序运⾏的过程中,会产…

【大数据基础】vmware+ununtu安装详细过程

环境配置 1. 虚拟机VMware下载与安装 首先安装vmware workstation 密钥直接利用科技生成。 检查vmware是否成功安装 2. VMware安装Ubuntu18.04 LTS 在清华源镜像站找到合适版本的ubuntu 联网安装需要一些时间,大致在一到两个小…

NetSuite Balancing Segment平衡段

春节假期偷了一段时间懒,现在开始工作了。今朝谈一个偏门题目,于未知领域再下一城。说这个题目偏,就要讲讲渊源。话说在Oracle的EBS和Fusion产品中的COA领域有个功能叫做“Balancing Segment”。 问了几位Oracle老炮,也说是对第二…

RDS-MySQL算不算国产数据库及其风险问题

作者:IT圈黎俊杰 笔者在参与国内某大型央企信创替代研究工作中,遇到从各方面传来的“云平台上的RDS就是国产数据库,使用RDS替代原数据库,也是信创替代”的说法,当说的人多了,产生的误导性强了以后&#xff…

Qt OpenGL(三十八)——Qt OpenGL 核心模式-绘制彩色的点

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(三十八)——Qt OpenGL 核心模式-绘制彩色的点 一、场景 续接上一篇文章(动态刷新点云),动态刷新点云数据,如下图: 如果,我们需要的点的绘制是彩…

数据挖掘学习笔记——GEO数据库:芯片数据分析

数据挖掘 数据挖掘学习笔记——GEO数据库:芯片数据分析 文章目录数据挖掘一、芯片基础知识1.1、背景二、GEO数据库概述2.1、基础简介2.2、检索页面展示三、GSE项目的三种下载方式3.1、主页下载原始数据3.2、主页下载表达矩阵3.3、GEOquery包下载表达量四、基因名与…

AI与制造的联合与突破,捷配是作何选择的?

最近的chatGPT可谓是火遍全球,人工智能与AI的话题再一次被推上了各大平台热搜,各个行业、各路专家也大谈对各个行业的影响。那么PCB制造业中,AI意味着什么?某一天,在生产工厂中,看着每一条生产链条持续运行…

一文教你学会添加通达信外挂接口(财经外挂)

今天重点讲解怎样在您的股票交易软件里增加财经类外挂,对您的股票交易软件进行便利化的设置与完善,把您想看的内容统统加紧你的交易软件,方便以后的研究操作。 具体流程是这样的:打开您要添加的财经网站官网,复制官网…

第四章 模块和组件、模块化和组件化的理解

1、模块 理解:向外提供特定功能的js程序,一般就是一个js文件为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂作用:复用js,简化js的编写,提高js运行效率 我们以一段代码举例说明拆分模块…

C#WPF基础教程3——资源字典、样式、

资源字典 创建资源字典 创建合并资源属性 资源字典的使用 引用类库中的资源字典 在类库中创建资源字典 类库中资源字典的使用 样式 添加样式 使用静态的方式为按钮添加样式 设置背景样式,不能直接使用value 关联事件处理程序 UI层创建事件关联程序 model端创建…

每日学术速递2.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV、cs.AI、cs.CL 1.Deep Intra-Image Contrastive Learning for Weakly Supervised One-Step Person Search 标题:深度图像内对比学习用于弱监督的单步人物搜索 作者&#…

模型解释性:SHAP包的使用

本篇博客介绍另一种事后可解释性方法:SHAP(SHapley Additive exPlanation)方法。 1. Shapley值理论 Shapley值是博弈论中的一个概念,通过衡量联盟中各成员对联盟总目标的贡献程度,从而根据贡献程度来进行联盟成员的利益分配,避免…

机器学习-特征工程

特征工程是将原始数据转换为更好的代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性。特征抽取文本特征抽取,sklearn的API是sklearn.feature_extraction.text.CountVectorizer。(1).英文分词from sklearn.fe…

Smart Finance 热启动创世开启,参与质押瓜分SMART资产

在2023年开年以来,加密市场开始迎来复苏,以BTC、ETH等为代表的主流加密资产迎来普涨,虽然相较于2021年顶峰时期相比仍存在一定的差距,但市场的回暖正在带动加密行业在2023年的复苏。而随着DigiDaigaku登录美国体育盛会“超级碗”&…

手把手教你抢BingChatGPT免费体验名额!

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :ChatGPT-Bing 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永…

关于docker在CentOS6与CentOS7的安装教程

CentOS 6 安装docker步骤yum install -y epel-releaseyum install -y docker-io安装后的配置文件:/etc/sysconfig/docker启动Docker后台服务:service docker startdocker version验证CentOS 7 安装docker步骤感兴趣的可以看看docker安装文档https://docs…

企业如何解决内容审核的安全风险?

内容审核是什么?随着互联网的快速发展,与之而来的是信息爆炸式增长,而且这些互联网信息良莠不齐,其发布者也鱼龙混杂,常常混入很多不良或者违规违法信息,例如涉政、涉黄、暴恐、违禁、不良价值观、广告等。…