【SpringMVC】web服务器,访问失败的问题,SpringMVC,建立连接,请求

【web服务器】

web服务器可以对http协议进行封装,程序员不需要直接对http协议进行操作(不需要去写复杂的网络编程代码),让web开发更加便捷,所以它也有「WWW服务器」的称呼

常见的web服务器:Tomcat,Jboss,IIS等

SpringBoot内置了Tomcat服务器,无需配置即可使用

Tomcat默认端口是「8080」,所以我们程序访问时的端口号也是8080

【访问失败的问题】

【状态码】

2XX:表示成功

3XX:重定向,转移

4XX:客户端(浏览器)错误,通常指请求头有问题,检查url是否拼写有误,方法是否受限等

5XX:服务器错误,一般是代码报错,检查代码是否有问题

【无法访问】

原因:

1.服务器没有启动

2.没有权限,不能访问目标的端口号

【错误日志】

阅读日志,从下往上,从左往右以段为单位进行阅读

一直看到有蓝色信息为止,蓝色信息代表是我们的代码

【Spring Web MVC】

简称「Spring MVC」,是一个web框架

MVC是“model view controller ”的简写,一种软件架构设计模式,它把软件系统分为模型,视图,控制器三个基本部分

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

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

控制器:可以理解为一个分发器,用于决定对视图发来的请求,用哪一个模型进行处理,以及处理完后需要跳转回哪一个视图,即用来连接视图与模型

Spring MVC架构:

spring MVC的重点是,通过浏览器和用户程序进行交互

分为三方面:

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

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

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

【建立连接】

关键注解1:@RequestMapping()

括号内指定资源路径名称

这个方法可以进行「建立连接」

关键注解2:@RestController

配置环境后,附带的maven包中的代码有成百上千行,如果没有给我们写的代码打标记,这相当于Spring要一次阅读所有的代码,这对于Spring的负担很大,因此它会直接不看,并产生状态码报错

「@RestController」可以给我们写的代码“打上一个标记”,让Spring去阅读我们写的代码,这样才能生效

而「@RequestMapping」可以加在类上,也可以加在方法上,也可以都加

加在类上,就是「类路径」

加在方法上,就是「方法路径」

访问时,需要「类路径+方法路径」

因此,它既是「类注解」,也是「方法注解」

【只接收get请求,不接收post请求】

通过method属性去指定GET,从而达到只接收get请求的效果

//把「GET」改为「POST」也可以变成只接收post请求,不接收get请求

但也可以使用这样的一个简洁方法:「@GetMapping」

这两个是划等号的

同理

v3,v4这两个也是划等号的

【请求】

可以使用「postman」软件进行辅助操作

//测试后端代码时还需要写前端代码,这样麻烦又痛苦,因此「接口测试工具」应运而生,它让后端工程师即便不写前端代码也可以进行测试,「postman」就是一个这样的工具软件

这个代码的含义是传入一个name的key值,并返回对应的value值

传递的普通参数,默认类型为「String」,后端接收时,根据后端定义的类型来转换

【传多个参数】

除此之外,还可以传递多个参数,且访问时参数的顺序可以不一样

上面的spring代码是下面http代码的简洁化,也可以理解为下面是上面的源码,二者含义相同

【传递对象】

传多个参数可能会产生修改不方便的问题,因此为了方便,可以构造一个包含多个参数的对象来进行传递

此外传递对象时,如果其中有些参数不传,也不会报错(因为对象中的参数是成员变量,不传时初始值为0)

【给参数重命名】

需要掌握一个新注解「@RequestParam」

这个代码可以确保在接收到前端的“userName”参数时,后端按照“name”去处理

因此,这个注解的作用是「参数绑定」,在该代码中将userName与name进行绑定

但如果进行了这样的参数绑定,那么这个参数就变成了一个「必传参数」:前端url所传的参数必须要是userName,否则会报错

这是因为RequestParam源码中,boolean类型的required方法默认为true,要想避免这种事,我们需要设置required属性为false

因此注解中可以用这样的形式去写,这么一来后端没有收到userName这样的参数时,会返回一个null

【传递数组】

【传递list】

这样是会报错的

因为我们当前所使用的方式和传递数组的方式是一样的,但接收list是没办法用这个接收的,因此我们可以使用「@RequestParam」注解

这个注解表示参数绑定,当发送信息时,默认会把“zhangsan,lisi,wangwu”封装成一个数组,因此使用数组接收是OK的,但使用list就不行了,所以我们需要把数组转换为list

这就相当于把数组绑定为了list

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为配置 之 STP

目录 简介: STP: RSTP: 如何改变根网桥: (1)改变优先级: (2)改变root: 各端口的状态: 总结: 简介: STP(Spanning Tree Protoco…

深度学习:Matplotlib篇

一、简介 1.1 什么是 Matplotlib? Matplotlib 是一个广泛使用的 2D 绘图库,它可以用来在 Python 中创建各种静态、动态和交互式的图表。无论是科学计算、数据可视化,还是深度学习模型的训练与评估,Matplotlib 都能提供强大的图形…

虚拟现实新纪元:VR/AR技术将如何改变娱乐与教育

内容概要 在当今科技飞速发展的时代,虚拟现实(VR)和增强现实(AR)技术不仅让我们的娱乐体验如虎添翼,更为教育变革注入了新活力。这些技术的飞跃进展,将原本平淡无奇的场景转变为令人沉醉的沉浸…

深入浅出 C++ STL:解锁高效编程的秘密武器

引言 C 标准模板库(STL)是现代 C 的核心部分之一,为开发者提供了丰富的预定义数据结构和算法,极大地提升了编程效率和代码的可读性。理解和掌握 STL 对于 C 开发者来说至关重要。以下是对 STL 的详细介绍,涵盖其基础知…

面向对象编程中类与类之间的关系(一)

目录 1.引言 2."有一个"关系 3."是一个"关系(继承) 4.“有一个”与“是一个”的区别 5.not-a关系 6.层次结构 7.多重继承 8.混入类 1.引言 作为程序员,必然会遇到这样的情况:不同的类具有共同的特征,至少看起来彼…

JavaWeb——Web入门(1/9)-Spring Boot Web介绍(Spring家族,Spring Boot)

目录 Spring家族 Spring Boot 在我们了解完了 Maven 这款项目构建工具的基本使用之后,接下来我们正式的进入到 Web 后端开发的学习。 第一篇章要了解的是 Spring Boot Web 的入门。 在正式开始之前,我们先需要介绍一下什么是 Spring 以及什么是 Spri…

H3C Hybrid 实验

实验拓扑 图 1-1 注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备,以此类推;另外,同一网段中,IP 地址的主机位为…

【NOI】C++函数入门二(自定义函数)

文章目录 前言一、概念1.导入1.1 首先什么是函数呢? 2.函数分类3.为什么要定义函数呢?4.函数结构5.函数使用注意事项 二、例题讲解问题:1137 - 纯粹素数问题:1258 - 求一个三位数问题:1140 - 亲密数对问题:…

Flutter仿京东商城APP实战 用户中心基础布局

用户中心界面 pages/tabs/user/user.dart import package:flutter/material.dart; import package:jdshop/utils/zdp_screen.dart; import package:provider/provider.dart;import ../../../store/counter_store.dart;class UserPage extends StatefulWidget {const UserPage…

如何在Node.js中执行解压缩文件操作

一、解压文件 1.安装依赖: 安装adm-zip依赖包:npm install adm-zip --save 安装iconv-lite依赖包:npm install iconv-lite --save 解压前的file文件夹结构: update-1.0.2.zip压缩包内容: 2.在depresssFile.js文件&…

Vue学习笔记(六)

模板引用(获取DOM 操作) 虽然Vue的声明性渲染模型为你抽象了大部分对DOM的直接操作&#xff0c;但在某些情况下&#xff0c;我们仍然需要直接访问底层DOM元素。要实现这一点&#xff0c;我们可以使用特殊的refattribute。 挂载结束后引用都会被暴露在this.$refs之上。 <s…

华为原生鸿蒙操作系统:我国移动操作系统的新篇章

华为原生鸿蒙操作系统&#xff1a;我国移动操作系统的新篇章 引言 在移动操作系统领域&#xff0c;苹果iOS和安卓系统一直占据主导地位。然而&#xff0c;随着华为原生鸿蒙操作系统的正式发布&#xff0c;这一格局正在发生深刻变化。作为继苹果iOS和安卓系统后的全球第三大移动…

android studio编译错误提示无法下载仓库

一、调整方法之一 buildscript {repositories {google()jcenter()//maven { url https://maven.aliyun.com/repository/google }//maven { url https://maven.aliyun.com/repository/central }}dependencies {// classpath "com.android.tools.build:gradle:4.1.1"c…

Prompt Engineering (Prompt工程)

2 prompt工程2大原则 2.1 给出清晰&#xff0c;详细的指令 策略1&#xff1a;使用分割符清晰的指示输出的不同部分&#xff0c;比如"",<>,<\tag>等分隔符 策略2&#xff1a;指定一个结构化的输出&#xff0c;比如json,html等格式 策略3&#xff1a;要…

C++STL之stack

1.stack的使用 函数说明 接口说明 stack() 构造空的栈 empty() 检测 stack 是否为空 size() 返回 stack 中元素的个数 top() 返回栈顶元素的引用 push() 将元素 val 压入 stack 中 pop() 将 stack 中尾部的元素弹出 2.stack的模拟实现 #include<vector> namespace abc { …

监控-08-skywalking监控告警

文章目录 前言一、准备二、配置skywalking2.1 修改alarm-settings.yml2.2 重启skywalking 三、收到告警邮件总结 前言 skywalking根据监控规则&#xff0c;通过webhook调后端微服务接口&#xff0c;从而发送告警邮件。 一、准备 根据上几章内容&#xff0c;保证skywalking能监…

Spring IoC DI

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 目录 1. 应用分层 1.1 如何分层: 1.2 MVC与三层架构区别联系 2. Spring 3.IoC & DI⼊⻔ 3.1 什么是IoC&#xff1f; 3.2 DI 介绍 …

CANFD SSP第二采样点引发的“风波”分析

案例背景&#xff1a; 近几年来&#xff0c;主机厂逐渐大范围使用CANFD通信。在CAN网络中&#xff0c;因SSP第二采样点引发的错误帧偶有发生&#xff0c;所以在主机厂的SPEC需求中&#xff0c;明确要求启用CAN控制器的TDC收发器延迟补偿&#xff0c; 目录 1 CANFD的SSP第二采…

【设计模式】《Java 设计模式魔法:解锁高效编程的秘密武器》

标题&#xff1a;《Java 设计模式奇幻之旅&#xff1a;解锁高效编程的魔法钥匙》 摘要&#xff1a; 本文将深入探讨 Java 中的十种设计模式&#xff0c;包括单例模式、工厂方法模式、抽象工厂模式…迭代器模式、组合模式、模板方法模式等。通过详细的解释、生动有趣的例子以及…

【skywalking 】选择Elasticsearch存储

介绍 skywalking支持 Elasticsearch 和 OpenSearch 作为存储。 OpenSearch 是 ElasticSearch 7.11 的一个分支&#xff0c;但在 Apache 2.0 中获得许可。 OpenSearch 存储与 ElasticSearch 共享相同的配置。为了激活 OpenSearch 作为存储&#xff0c;请将存储提供程序设置为e…