当前位置: 首页 > news >正文

【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


http://www.mrgr.cn/news/60164.html

相关文章:

  • 六:Python学习笔记--基础知识(5)集合
  • 京东商品详情API详解:全面掌握返回值字段
  • Pandas库学习Day21
  • 01-二自由度机械臂—位置分析
  • xxl-job java.sql.SQLException: interrupt问题排查
  • 十分钟了解Android Handler、Looper、Message
  • 【ChatGP】让ChatGPT解释和简化复杂的技术概念
  • 108.SAP MII功能详解(20)Workbench-DisplayTemplate(i5Grid)
  • 开源视频生成 Pyramid Flow 本地部署实测
  • 前端css-媒体查询@media以及常见使用例子
  • 探索基础设施即代码(IaC):Terraform 与 CloudFormation 的应用
  • 目标检测数据集 - 新能源车车牌检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • linux 中文实用型手册 基于RHEL(红帽系)
  • 【linux网络编程】| 网络套接字socket | 初识网络开发
  • 什么是全自动虫情测报灯
  • 应用快速启动工具 Biniware Run v7.0.1.0 中文绿色版
  • 【NOI】C++函数入门二(自定义函数)
  • Django入门教程——员工数据管理
  • 面向应用型人才的中药炮制教学实训方案
  • 掌握 Golang 性能调优:深入理解 `runtime/debug` 包
  • 分布式储能监控系统在某5MW分布式储能项目中的应用
  • 【源码+文档】基于SpringBoot+Vue健康饮食智慧销售系统【提供源码+答辩PPT+参考文档+项目部署】
  • 自动驾驶---理想汽车智驾进展
  • Django入门教程——动态表格分页展示数据
  • Java版本的基于计算机视觉的跃动小子保卫主公自动通关计划之整体思路篇
  • 创建和管理IPAM