SpringBoot和SpringMVC

目录

一、springboot项目

(1)创建springboot项目

(2)目录介绍

(3)项目启动

(4)运行一个程序

(5)通过其他方式创建和运行springboot项目

二、SpringMVC

1、MVC概念

2、SpringMVC概念

3、SpringBoot与SpringMVC的联系与区别

4、创建springmvc项目

(1)建立连接

(2)处理请求

(3)返回响应


一、springboot项目

(1)创建springboot项目

需要先下载好Spring Boot Helper插件。IDEA专业版不需要下载该插件。

进入IDEA创建新项目,选择Spring Initializr:

点击Next:

点击Next:

点击Next:

点击Create:

(2)目录介绍

(3)项目启动

这个是启动类,点击任意小绿箭头都可以运行项目。

项目启动成功,发现springboot项目里内置了tomcat

(4)运行一个程序

上面算是springmvc(后面解释)

运行启动类,在浏览器访问:

8080是因为web服务器是tomcat,默认端口号为8080,也可以修改端口号:

在这个里面写:server.port='端口号'

(5)通过其他方式创建和运行springboot项目

①创建项目其他方式

直接进入官网创建生成jar包,和IDEA创建方式是一样的

②运行jar包

java -jar jar包名字运行jar包

进入jar包所在命令页面,找到jar包

运行成功:

通过浏览器访问:

二、SpringMVC

1、MVC概念

是软件工程中的一种软件架构设计模式,他把软件系统分为三个模块:view(视图)、model(模型)、controller(控制器)。

view:与浏览器进行交互,获取请求数据以及接收响应;

model:主体部分,处理数据逻辑部分;

controller:可以理解为一个分发器,用来连接view和model,根据view发来的请求,决定使用那个model,以及决定将返回的响应分发给哪个视图。

2、SpringMVC概念

是一个实现了MVC模式的web框架。

3、SpringBoot与SpringMVC的联系与区别

Spring Boot是一个基于Spring框架的快速开发框架,它简化了Spring应用程序的搭建和配置过程,提供了一种快速开发的方式。而Spring MVC是Spring框架中的一个模块,用于构建Web应用程序,提供了一套MVC(Model-View-Controller)架构。

它们之间的联系在于,Spring Boot可以集成Spring MVC,通过Spring Boot可以更快速地构建和配置Spring MVC应用程序。Spring Boot提供了自动配置和起步依赖等功能,简化了Spring MVC应用程序的开发过程。Spring Boot是建立Spring MVC的一种方式。

它们的区别在于,Spring Boot是一个快速开发框架,提供了一种快速构建Spring应用程序的方式,而Spring MVC是一个Web框架,用于构建Web应用程序。Spring Boot可以集成Spring MVC,也可以集成其他的Spring模块,如Spring Data、Spring Security等,而Spring MVC主要用于构建Web应用程序。

上述在构建springboot时,就是选择了spring web,可以建立spring mvc项目,实现web开发。

4、创建springmvc项目
(1)建立连接

在springmvc中,是通过@RequestMappering注解,将浏览器与服务器之间建立连接。该注解后面跟访问的路径。注解在类上时,访问类中的方法时,路径=类路径+方法路径;类没有注解时,访问方法时,路径=方法路径。

eg:方法路径

类路径+方法路径:

不加类路径,会显示404.

@RestController注解的作用:将一个类标识为控制器,用于处理HTTP请求并返回响应。没有该注解时,有http请求时就无法访问该类。

(2)处理请求

①http请求:包括首行(方法、url、版本号)、请求头(header)、正文(get方法大概率没有)

②获取url中,查询字符串(对url的补充)的参数。

一个参数获取

指定请求方式

springmvc获取请求时,请求方式可以是get,也可以是post,也可以指定请求方式。

指定请求方式:

发送get请求与响应:

发送post请求与响应:

405表示方法不被允许。

两个参数获取

age写为Integer是因为Integer可以接收null,int类型时,没有age会报错。

postman发送请求:

收到的响应:

参数重命名

postman发送请求:

收到的响应:

但以上代码有个问题,username必须是必传的参数。

username默认是必传的参数,可进行修改:

请求与响应:

对象获取

定义一个对象user:

获取对象

请求与响应:

数组获取

请求与响应:

或者:

集合获取

请求与响应:

发现报错,500是服务器的错误,当参数是集合时,需要通过@RequestParam绑定参数关系。

请求与响应:

json正文获取

请求与响应:

url参数获取

请求与响应:

url中参数重命名获取

上传文件获取

请求与响应:

 Cookie和Session

概念见文章:cookie和session概念

Cookie获取

①获取全部cookie:

 ②获取指定cookie

session设置

session获取

请求header获取

(3)返回响应

返回静态页面

制作一个静态页面:index.html

发现返回的不是index.html页面,而是一串文字。当把代码做以下修改:

只是改了一个注解,为什么结果就不一样了???

之前说@RestController注解是将将一个类标识为控制器,用于处理HTTP请求并返回响应。那和@Controller注解的区别在哪里???

@RestController注解的源码

发现是包括@Controller注解的

@Controller注解的源码

与@RestController注解源码比较,发现少了@ResponseBody注解。

即:@Controller+@ResponseBody=@RestController

@Target注解:表示注解的使用范围;

@Retention注解:表示注解的生命周期;

@Controller注解:告诉Spring哪些类是控制器,需要被管理。响应默认返回的是页面;

@RestController注解:设定响应返回的是数据。

@Controller+@RestController,即:@RestController,使得响应返回的是数据。

所以在上面使用@RestController注解的时候返回的是一串字符串,但是将注解改为:@Controller时,返回的就是指定页面了。

返回HTML片段

返回json

自动确定返回类型:

Spring会根据返回值的类型自动确定返回类型,可以是JSON、XML等格式。

常见类型:

text/html : HTML格式
text/plain :纯文本格式      
text/xml :  XML格式
image/gif :gif图片格式    
image/jpeg :jpg图片格式
image/png:png图片格式
application/xml :XML数据格式  
application/json:JSON数据格式
application/pdf :pdf格式

eg:

刚刚返回的静态页面的响应,类型是html。

该响应类型为json

使用produces属性指定返回类型

以上响应未指定类型时,返回的是纯文本类型(text/plain)。

指定类型为json:

设置响应状态码

自定义响应header

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

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

相关文章

掌握虚拟化与网络配置之道:深入浅出VMware及远程管理技巧

目录 虚拟机介绍 虚拟机的关键字 服务器架构的发展 为什么用虚拟机VMware 虚拟机和阿里云的区别 功能角度 价格因素 应用场景 优势方面 找到windows的服务管理 配置VMware 关于VMware安装的几个服务 vmware如何修改各种网络配置 关于NAT的详细信息(了解) NAT(网…

2024年低压电工证模拟考试题库及低压电工理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年低压电工证模拟考试题库及低压电工理论考试试题是由安全生产模拟考试一点通提供,低压电工证模拟考试题库是根据低压电工最新版教材,低压电工大纲整理而成(含2024年低压电工证…

嵌入式单片机中晶振的工作原理

晶振在单片机中是必不可少的元器件,只要用到CPU的地方就必定有晶振的存在,那么晶振是如何工作的呢? 什么是晶振 晶振一般指晶体振荡器,晶体振荡器是指从一块石英晶体上按一定方位角切下的薄片,简称为晶片。 石英晶体谐…

Three.js学习8:基础贴图

一、贴图 贴图(Texture Mapping),也翻译为纹理映射,“贴图”这个翻译更直观。 贴图,就是把图片贴在 3D 物体材质的表面,让它具有一定的纹理,来为 3D 物体添加细节的一种方法。这使我们能够添加…

Git详细讲解

文章目录 一、Git相关概念二、本地分支中文件的添加 、提交2.1 文件状态2.2 创建Git仓库2.2.1 git init2.2.2 git clone 2.3 添加操作(git add)2.4 提交操作(git commit)2.5 撤销操作2.5.1 撤销 add操作2.5.2 撤销 commit操作2.5.3 覆盖上一次的commit操…

ElasticSearch之倒排索引

写在前面 本文看下es的倒排索引相关内容。 1:正排索引和倒排索引 正排索引就是通过文档id找文档内容,而倒排索引就是通过文档内容找文档id,如下图: 2:倒排索引原理 假定我们有如下的数据: 为了建立倒…

Java中JVM常用参数配置(提供配置示例)

目录 前言一、内存参数配置二、垃圾收集器配置三、GC策略配置3.1、基础通用配置3.2、Parallel 和 Parallel Old 常用参数配置3.3、CMS 常用参数配置3.4、G1 常用参数配置 四、GC日志配置五、dump 日志参数配置5.1、OutOfMemory异常时生成dump文件5.2、发生Full GC时生成dump文件…

PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle、Spark执行流程

目录 RDD持久化 RDD 的数据是过程数据 RDD 缓存 RDD CheckPoint 共享变量 广播变量 累加器 Spark 内核调度 DAG DAG 的宽窄依赖和阶段划分 内存迭代计算 Spark是怎么做内存计算的? DAG的作用?Stage阶段划分的作用? Spark为什么比MapReduce快? Spa…

Android Graphics 图像显示系统 - 开篇

“ 随着学习的不断深入和工作经验的积累,欲将之前在博客中整理的Android Graphics知识做进一步整理,并纠正一些理解上的错误,故开设Graphics主题系列文章 ” 序言 由于工作需要,也源于个人兴趣,终于下决心花时间整理一…

Mac 下JDK环境变量配置 及 JDK多版本切换

一、推荐官网下载: 二、环境变量配置 1、查看JDK地址,在终端输入以下命令: /usr/libexec/java_home -V 我的路径: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home /Library/Java/JavaVirtualMachines/zulu-11.j…

ffmpeg命令生成器

FFmpeg 快速入门:命令行详解、工具、教程、电子书 – 码中人的博客FFmpeg 是一个强大的命令行工具,可以用来处理音频、视频、字幕等多媒体文件。本文介绍了 FFmpeg 的基本用法、一些常用的命令行参数,以及常用的可视化工具。https://blog.mzh…

nvm安装node后,npm无效

类似报这种问题,是因为去github下载npm时下载失败, Please visit https://github.com/npm/cli/releases/tag/v6.14.17 to download npm. 第一种方法:需要复制这里面的地址爬梯子去下载(github有时不用梯子能直接下载,有…

机器学习系列——(二十二)结语

随着我们的机器学习系列的探索画上句号,我们不禁感慨于这一领域的广阔和深邃。从最初的基础概念到复杂的算法,从理论的探讨到实际应用的示例,我们一起经历了一段非凡的旅程。机器学习不仅是当前技术创新的核心驱动力之一,也是塑造…

电脑通电自启动设置

首先要进入BIOS,以华硕为例,按下电源键,在开机之前按下delete键,其他电脑可能是esc或者某个f键,请自行查找。 进入BIOS后要找到电源管理,可以在高级选项中找一找,如上图右下角选择高级模式。 …

基于华为云欧拉操作系统(HCE OS)容器化部署传统应用(Redis+Postgresql+Git+SpringBoot+Nginx)

写在前面 博文内容为 华为云欧拉操作系统入门级开发者认证(HCCDA – Huawei Cloud EulerOS)实验笔记整理认证地址:https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1博文内容涉及一个传统 Springboot 应用HCE部署&#x…

软件价值7-万花筒

模拟一个万花筒,鼠标点击可以变换图形 import pygame import sys import math import randompygame.init()# 设置窗口大小 WIDTH, HEIGHT 800, 600 CENTER (WIDTH // 2, HEIGHT // 2)# 设置颜色 BLACK (0, 0, 0)# 初始化屏幕 screen pygame.display.set_mode((…

Springboot 整合 Elasticsearch(二):使用HTTP请求来操作ES

📁前情提要:Springboot整合Elasticsearch(一):Linux下安装 Elasticsearch 8.x 目录 一、使用 elasticsearch-head 插件连接 1、下载压缩包 2、在 chrome 浏览器中添加扩展程序 3、修改IP地址,点击连接 …

【GAMES101】Lecture 20 光场

目录 光场(Light Field / Lumigraph) 广场照相机 光场(Light Field / Lumigraph) 我们在三维的世界中从一个观测点出发看到这么一幅二维的画面 如果有这么一副画布可以完美的显示出从观察点看到的画面,那用这幅画布…

Java LinkedList 实现栈和队列

Java LinkedList 实现栈和队列 package com.zhong.collection;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {// LinkedList 创建一个队列LinkedList<String> queue new LinkedList<>();// 进队System.out…

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…