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

web开发(1)-基础

 这是对b站课程的总结,后续可能会继续更

01 前后端分离介绍_哔哩哔哩_bilibili01 前后端分离介绍是Web应用开发-后端基础-基于Springboot框架的第1集视频,该合集共计29集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1gD4y1s7ez?p=1&vd_source=ec64e4d3b2c8f2bdd5c10db873256022

目录

杂项

定义访问接口

前端向后端传递参数

通过访问地址来传递参数:以参数的形式获取参数

设置默认值

///风格的参数传递:以路径的形式获取

delete获取参数

add和edit获取参数

向前端返回JSON格式数据

数据库

问答

npm

导入注解的作用

+或者%20在url中表示空格

500代表什么错误

put和post方法有什么区别

杂项

pom.xml相当于requirement.txt,用于加载必要库

@SpringBootApplication 是JAVA里面的注解,

用?来传参数,用&来连接参数,如http://127.0.0.1:8080/save_user?name=newName&age=11

定义访问接口

http中四种方法:

get 请求,比如直接输入url

post 提交数据,会把数据放在body里面

delete 删除

put/patch 修改

浏览器做的就是把network中response的返回的信息解释渲染出来

http协议中有两部分,一部分是头(header),一部分是体(body)

header里面的request header和response header

这里发送请求使用的是get,但是response header中表示只接受put

前端向后端传递参数

postman可以代替浏览器来当前端

通过访问地址来传递参数:以参数的形式获取参数

在后端中加上@Slf4j和log,在函数中添加参数,就可以接收记录前端传来的参数

@RestController
@Slf4j
@RequestMapping("/poi")
public class PoiController {@GetMapping("/list")public String list(int pageNum,int pageSize) {log.info("mu info,pageNum = {}",pageNum);return "list";}}

可以在在前端输入url:http://127.0.0.1:8880/poi/list?pageNum=2&pageSize=10

这样后端就可以接收到参数并打印如下日志

2024-09-27 19:07:31.606  INFO 7264 --- [nio-8880-exec-3] c.example.demo2.demos.web.PoiController  : mu info,pageNum = 2
设置默认值

在函数定义中添加@RequestParam(defaultValue = "1")设置默认值

public String list(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "30") int pageSize)

///风格的参数传递:以路径的形式获取

如果我们想在url中输入http://127.0.0.1:8880/poi/detail/100,将detail后的100作为id,那么我们可以在后端做如下修改

    @GetMapping("/detail/{id}")public String detail(@PathVariable int id) {log.info("poi detail ,id = {}",id);return "YOU GET DETAIL";}
delete获取参数

用路径的形式获取

add和edit获取参数

定义一个类(准备数据结构),添加@RequestBody 注解获取参数

如果有什么找不到value之类的报错,看看是不是有注解没导入

在PoiController.java中写

@PostMapping("/add")
public String add(@RequestBody Poi poi ) {log.info("poi add ,poi = {}",poi.name);return "add";
}

在Poi.java中定义类

package com.example.demo2.demos.web;public class Poi {public String name;public String description;
}

并且注意发送请求时应在Postman中选择Body,使用JSON格式发送(POST不支持在url中加参数)

向前端返回JSON格式数据

修改后端代码 10 向前端返回JSON数据_哔哩哔哩_bilibili

    @GetMapping("/detail/{id}")public PoiVo detail(@PathVariable int id) {log.info("poi detail ,id = {}",id);var poiVo = new PoiVo();poiVo.name = "wu";poiVo.description = "this is wu";return poiVo;}

这样前端就能接收到后端返回的东西

数据库

数据库到java要由一个转换的工具,因为数据库是用的网络的语言tcpip,要把它转成java能识别的语言

mybatis plus是由国人开发的对开源项目mybais的升级,帮助数据库的开发

问答

这部分是我遇到的部分问题的总结

npm

NPM(Node Package Manager)是一个用于管理JavaScript和前端项目的包管理器。它允许你安装、共享和管理依赖项,这些依赖项可以是库、工具、框架等。NPM是Node.js的默认包管理器,它拥有一个庞大的在线库,称为npm registry,其中包含了成千上万的可重用代码包。

NPM的主要功能包括:

  1. 安装包:可以通过npm install命令来安装包。
  2. 管理项目依赖:通过package.json文件来定义项目所需的依赖。
  3. 版本控制:可以指定依赖的版本号,包括精确版本、版本范围等。
  4. 发布包:允许开发者将自己的代码包发布到npm registry,供其他人使用。
  5. 脚本自动化:可以在package.json文件中定义脚本命令,如构建、测试等。
  6. 全局安装:可以全局安装包,使其在任何地方都可以使用。

NPM是JavaScript开发中不可或缺的一部分,它极大地提高了开发效率和代码的可维护性。

导入注解的作用

在Java中使用Spring框架时,导入@PostMapping@RequestBody注解实际上是在告诉编译器这些注解的存在和它们的含义。这些注解是Spring框架提供的,用于定义Web服务的行为。下面是每个注解的详细解释:

@PostMapping

@PostMapping 是一个用于处理HTTP POST请求的方法级别的注解。当你在一个方法上使用这个注解时,你告诉Spring框架,当一个HTTP POST请求到达指定的路径时,应该调用这个方法。这个注解是@RequestMapping注解的一个特化,专门用于处理POST请求。

  • 导入语句import org.springframework.web.bind.annotation.PostMapping;
  • 作用:将HTTP POST请求映射到特定的方法。

@RequestBody

@RequestBody 注解用于Spring MVC中,它告诉Spring框架,HTTP请求的正文应该被绑定到方法参数上。这通常用于接收JSON或XML格式的数据,并将其自动转换为Java对象。

  • 导入语句import org.springframework.web.bind.annotation.RequestBody;
  • 作用:将HTTP请求的body部分绑定到方法参数。

导入注解的实际作用

  1. 提供编译时检查:导入注解后,编译器知道这些注解的存在,可以在编译时检查注解的使用是否正确。
  2. 提供文档和帮助:IDE(如IntelliJ IDEA或Eclipse)可以利用这些导入的注解提供代码提示和文档查看功能。
  3. 确保注解可用:如果不导入相应的注解,编译器会报错,因为找不到这些注解的定义。
  4. 模块化和组织代码:通过导入特定的注解,你可以将代码组织成模块,每个模块只关注它需要的部分。
  5. 避免命名冲突:Java中的类名和方法名是区分大小写的,导入注解可以避免与现有类或方法的命名冲突。

通过正确导入这些注解,你可以确保你的Spring应用程序能够正确地响应HTTP请求,并且能够处理请求体中的数据。

+或者%20在url中表示空格

在 URL 中,空格不能直接使用,因为它是一个保留字符,可能会被解释为其他意义。但是,你可以通过以下两种方式之一来表示空格:

  1. 加号(+):在 URL 编码中,加号(+)通常被用作空格的替代符。例如,在表单数据中,空格会被替换为加号。然而,这种用法并不普遍,且在现代 Web 应用中较少使用。
  2. 百分比编码(%20):空格的百分比编码是 %20。这是一种更为标准和通用的方法来在 URL 中表示空格。当你在浏览器地址栏输入一个包含空格的 URL 时,浏览器会自动将空格转换为 %20

例如,如果你想在 URL 的查询参数中包含一个空格,你应该这样编码:

http://127.0.0.1:8880/poi/detail?id=100%20

在这个例子中,100%20 表示 100 (数字100后面跟一个空格)。

总结来说,更推荐使用百分比编码 %20 来在 URL 中表示空格,因为这是一种更为可靠和通用的方法。

500代表什么错误

HTTP 500错误,全称是"HTTP 500 Internal Server Error"(内部服务器错误),是一种常见的服务器端错误。它表明你尝试访问的网站遇到了问题,导致无法完成你的请求。这个错误不是由你的浏览器、电脑或者网络连接引起的,而是你访问的网站的服务器端存在问题。

HTTP 500错误可能是由多种原因引起的,包括但不限于:

  1. 服务器端脚本问题,如代码错误或逻辑错误。
  2. 文件权限设置不正确,导致服务器无法访问或修改必要的文件。
  3. .htaccess文件损坏或包含语法错误。
  4. 服务器配置错误,如PHP.ini文件中的设置不正确。
  5. 服务器过载或资源限制,如内存不足。
  6. 数据库连接问题或数据库损坏。
  7. 服务器超时,可能是由于脚本执行时间过长。

解决HTTP 500错误通常需要网站管理员或服务器管理员的介入。他们可以通过检查服务器日志文件来确定错误的具体原因,并采取相应的措施进行修复。这可能包括代码审查、文件权限调整、修复配置文件、增加服务器资源或优化数据库查询等。

作为普通用户,如果遇到HTTP 500错误,可以尝试以下步骤:

  • 刷新页面,看看是否是临时问题。
  • 清除浏览器缓存和Cookies。
  • 稍后再试,看看问题是否已经解决。
  • 如果问题持续存在,可以考虑联系网站管理员或技术支持团队。

对于网站运营者来说,解决HTTP 500错误可能需要更深入的技术知识和经验。他们可能需要检查服务器日志、修复代码错误、调整服务器配置、优化资源使用等。

put和post方法有什么区别

HTTP协议中的PUT和POST方法都是用于向服务器发送数据的请求方法,但它们在语义、用途和行为上有一些关键的区别:

语义意图

    • PUT:通常用于更新资源或创建新资源(如果该资源不存在)。PUT请求应该满足幂等性,即多次执行相同的PUT请求应该产生相同的结果。
    • POST:用于向资源提交新的数据,通常用于创建新资源或执行某些操作(如表单提交)。POST请求不是幂等的,多次执行相同的POST请求可能会产生不同的结果。

数据位置

    • PUT:数据通常放在请求体(body)中。
    • POST:数据可以放在请求体中,也可以放在URL中,但现代Web开发中更倾向于放在请求体中。

幂等性

    • PUT:幂等的,意味着相同的请求发送多次和发送一次效果相同。
    • POST:非幂等的,发送多次可能会创建多个资源。

安全性

    • PUT:由于其幂等性,通常认为比POST更安全,因为重复的PUT请求不会导致数据的重复提交。
    • POST:由于非幂等性,可能会导致数据的重复提交,因此在处理敏感数据时需要额外的逻辑来防止重复提交。

缓存

    • PUT:可以被缓存。
    • POST:通常不会被缓存,因为POST请求通常用于创建或修改资源。

历史记录

    • PUT:可以被保存在浏览器历史记录中。
    • POST:通常不会被保存在浏览器历史记录中,因为它们可能会包含敏感信息。

数据大小

    • PUT:通常用于发送大量数据,因为它将数据放在请求体中。
    • POST:也用于发送大量数据,但有时用于发送少量数据。

用途

    • PUT:通常用于更新资源,客户端指定了完整的资源状态。
    • POST:通常用于创建新资源或提交表单数据,客户端发送的是部分数据,服务器负责创建资源。

URL结构

    • PUT:URL通常指向要更新的资源。
    • POST:URL通常指向处理请求的服务器端脚本。

在实际应用中,选择PUT还是POST通常取决于API的设计和资源的状态管理需求。

相关文章:

web开发(1)-基础

这是对b站课程的总结,后续可能会继续更 01 前后端分离介绍_哔哩哔哩_bilibili01 前后端分离介绍是Web应用开发-后端基础-基于Springboot框架的第1集视频,该合集共计29集,视频收藏或关注UP主,及时了解更多相关视频内容。https://w…...

python程序操作Windows系统中的软件如word等(是否可以成功操作待验证)

一、python打开word软件 在 Python 中可以使用python-docx库来操作 Word 文档,但如果你的需求是直接打开 Word 软件,你可以使用os模块和subprocess模块来实现。以下是示例代码: import os import subprocessdef open_word():word_path rC:…...

人工智能发展历程

发展历程 人工智能的发展可以追溯到20世纪30年代,当时数理逻辑的形式化和智能可计算思想开始构建计算与智能的关联概念。1943年,美国神经科学家麦卡洛克和逻辑学家皮茨共同研制成功了世界上首个人工神经网络模型——MP模型,这为现代人工智能…...

Flutter路由

路由作为一种页面切换的能力,非常重要。Flutter 中路由管理有几个重要的点。 Navigator 1.0:Flutter 早期路由系统,侧重于移动端 ,命令式编程风格,使用 Navigator.push() 和 Navigator.pop() 等方法来管理路由栈。 N…...

css预处理器less

CSS预处理器Less教程 CSS预处理器是一种扩展CSS功能的工具,它允许开发者使用变量、嵌套规则、混合(Mixins)、函数等高级特性,使CSS代码更加灵活、易于维护和扩展。Less是其中一种流行的CSS预处理器,它使用JavaScript编…...

WEB服务器——Tomcat

服务器是可以使用java完成编写,是可以接受页面发送的请求和响应数据给前端浏览器的,而在开发中真正用到的Web服务器,我们不会自己写的,都是使用目前比较流行的web服务器。 如:Tomcat 1. 简介 Tomcat 是一个开源的轻量…...

C++ STL(3)list

文章目录 一、list 详解1、内存管理2、常用操作3、迭代器erase()删除list中的元素 前言: C 标准模板库(STL)中的 list 容器是一种双向链表数据结构,它允许在常数时间内进行插入和删除操作,而无需重新分配整个容器或移动…...

Ubuntu下安装Zookeeper集群

Zookeeper集群是一个开源的分布式协调服务系统,它由Apache软件基金会维护,旨在为分布式应用提供一致性和可靠性的服务。 在Zookeeper集群中,服务器可以扮演三种角色——领导者(Leader)、跟随者(Follower&a…...

模版and初识vector

一、引言 在C语言中,不论是数组,还是结构体定义的数组,功能都比较欠缺,不是单纯的添加几个变量就能够解决的。缺少增删查改的功能,为了解决这个问题,C决定填上C语言这个坑,但是填过坑的人都知道…...

网站开发基础:HTML、CSS

前端开发主要使用的技术如 HTML、CSS 和 JavaScript 等。 简单制作一个网页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>柒毓同学网站的首页</title><style>.c1{border: solid 1px g…...

IP协议讲解

IP协议 IP协议的本质&#xff1a;提供一种能力&#xff0c;将数据跨网络从A主机传输到B主机 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大 的数字是15, 因…...

SpringMVC4-SpringMVC获取请求参数

目录 通过ServletAPI获取&#xff08;不常用&#xff09; 通过控制器方法的形参获取请求参数 RequestParam RequestHeader CookieValue 通过POJO获取请求参数 解决获取请求参数的乱码问题 test_param.html&#xff1a; <!DOCTYPE html> <html lang"en&qu…...

【C++】C++基础

目录 一. C关键字(C98) 二、C的第一个程序 三、命名空间 3.1.namespace的价值 3.2.namespace的定义 3.2.命名空间使用 总结&#xff1a;在项目当中第一、第二种方法搭配使用&#xff0c;第三种冲突风险非常大&#xff0c;仅适合练习使用。 四、C输入&输出 五、缺省…...

自动化运维工具 Ansible

Ansible 基础 Ansible 介绍 Ansible 是一个自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、cfengine、chef、 func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能。 Ansible 的…...

深度学习:GAN图像生成

GAN的诞生背景 诞生&#xff1a; 2014年由Ian Goodfellow提出 创新性&#xff1a; 无监督学习&#xff1a;GAN 提供了一种新的方法来进行无监督学习&#xff0c;即不需要对训练数据进行标注就可以学习到数据的潜在分布。对抗训练&#xff1a;通过引入对抗机制&#xff0c;G…...

django基于python的房价分析可视化系统的设计与开发 h1y0i

目录 项目介绍技术栈具体实现截图Scrapy爬虫框架关键技术和使用的工具环境等的说明解决的思路开发流程爬虫核心代码展示系统设计论文书写大纲详细视频演示源码获取 项目介绍 大数据分析是现下比较热门的词汇&#xff0c;通过分析之后可以得到更多深入且有价值的信息。现实的科…...

Labview helper

IMAQ Advanced Setup Learn Geometric Pattern 2 VI 参数说明Curve Extraction Mode (0)指定VI如何识别图像中的曲线。如果您希望VI不对图像中对象的均匀性或图像背景做出任何假设&#xff0c;请将此选项设置为正常。如果您希望VI假定图像中的对象或图像背景由均匀的像素值组成…...

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频&#xff0c;一期视频将常用配置和用法梳理清楚&#xff0…...

如何用JavaScript编写一个简单的计数器

在网页开发中&#xff0c;计数器是一种常见的功能&#xff0c;它可以帮助我们记录点击次数、显示时间等。下面我将介绍如何在HTML页面中使用JavaScript实现一个基本的计数器。如图&#xff1a; 1、 创建HTML结构 首先&#xff0c;我们需要创建一个基础的HTML结构来容纳我们的计…...

uniapp中实现评分组件,多用于购买商品后,对商品进行评价等场景

前言 uni-rate是uniapp框架中提供的一个评分组件。它可以用于用户评价、打分等场景。uni-rate组件可以根据设定的星星总数&#xff0c;展示用户评分的效果&#xff0c;用户可以通过点击星星或滑动星星的方式进行评分。同时&#xff0c;uni-rate组件也支持自定义星星图标、星星…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

汇编语言学习(三)——DoxBox中debug的使用

目录 一、安装DoxBox&#xff0c;并下载汇编工具&#xff08;MASM文件&#xff09; 二、debug是什么 三、debug中的命令 一、安装DoxBox&#xff0c;并下载汇编工具&#xff08;MASM文件&#xff09; 链接&#xff1a; https://pan.baidu.com/s/1IbyJj-JIkl_oMOJmkKiaGQ?pw…...

Linux 中替换文件中的某个字符串

如果你想在 Linux 中替换文件中的某个字符串&#xff0c;可以使用以下命令&#xff1a; 1. 基本替换&#xff08;sed 命令&#xff09; sed -i s/原字符串/新字符串/g 文件名示例&#xff1a;将 file.txt 中所有的 old_text 替换成 new_text sed -i s/old_text/new_text/g fi…...