JavaWeb05-Web基础

news/2025/11/12 17:07:31/文章来源:https://www.cnblogs.com/Sunyn-blogs/p/19214730

Web基础

image

1.SpringBoot

Spring

  • 官网:spring.io

  • Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。

    image

    Spring Boot可以帮助我们非常快速的构建应用程序、简化开发、提高效率。

    image

1.1、入门程序

  • 需求:基于SpringBoot开发一个Web应用,浏览器发起请求/hello之后,给浏览器返回一个字符串“Hello Xxx”。

image

image

创建完Spring Boot项目后

image

这个为启动类,启动后才可以运行项目

创建如上图HelloController的请求类

package com.example.springbootwebquickstart;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController //表示当前是一个请求处理类
public class HelloController {@RequestMapping("/hello")public String hello(String name){System.out.println("name:" + name);return "Hello" + name + "~";}
}

然后访问

image

image

步骤:

  1. 创建SpringBoot工程,勾选Web开发依赖
  2. 定义请求处理类HelloController,定义请求处理方法
  3. 运行启动类,测试

image

1.2、HTTP协议

  • 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

    image

我们回到上一小节我们请求 Helloheima~

image

可以看到浏览器向客户端发出的请求和客户端的响应都是纯文本格式

  • 特点
    1. 基于TCP协议:面向连接,安全
    2. 基于请求-响应模型的:一次请求对应一次响应
    3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
      • 缺点:多次请求间不能共享数据
      • 优点:速度快

HTTP-请求协议

请求数据格式

image

image

HTTP协议中请求数据分为哪几个部分?

  • 请求行(请求数据的第一行)
  • 请求头(key:value)
  • 请求体(POST方式 与请求头之间隔了一个空行)
请求数据获取
  • Web服务器(Tomcat)对HTTP协议的请求数据进行解析,并进行封装(HttpServletRequest),在调用Controller方法的时候传递给了该方法。这样,就使得程序员不必直接对协议进行操作,让Web开发更加便捷。

    image

@RequestMapping("/request")
public String request(HttpServletRequest request){// 1.获取请求参数name, ageString name = request.getParameter("name"); // Tom// 2.获取请求路径uri 和 urlString uri = request.getRequestURI(); // /requestString url = request.getRequestURL().toString(); // http://localhost:8080/request// 3.获取请求头 User-AgentString userAg ent = request.getHeader("User-Agent"); // Mozilla/5.0 (Windows NT 10.0; Win64; x64)// 4.获取请求方式String method = request.getMethod(); // GET// 5.获取请求的查询字符串String queryString = request.getQueryString(); // name=Tom&age=10return "request success";
}

我们可以创建一个RequestController类来测试一下:

package com.example.springbootwebquickstart;import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RequestController {@RequestMapping("/request")public String request(HttpServletRequest request){//1.获取请求方式String method = request.getMethod();System.out.println("请求方式:" + method);//2.获取请求url地址String url = request.getRequestURL().toString();System.out.println("请求地址:" + url);//3.获取请求协议String protocol = request.getProtocol();System.out.println("请求协议:" + protocol);//4.获取请求参数- name,ageString name = request.getParameter("name");String age = request.getParameter("age");System.out.println("请求参数:" + name + " " + age);//5.获取请求头 - AcceptString Accept = request.getHeader("Accept");System.out.println("请求头:" + Accept);return "请求成功";}}

请求代码可以ai生成

当我们在浏览器中输入网址 localhost:8080/request?name=itheima&age=18

image

image

image

HTTP-相应协议

响应数据格式

image

image

关于重定向:

image

浏览器会进行两次请求行为,但对于用户来说没有感知

比如百度地址为(https://www.baidu.com/) 如果我们输入(http://www.baidu.com/)就会发生重定向

image

需掌握的状态码:

image

常见状态码错误:

image

响应数据设置
  • Web服务器对HTTP协议的响应数据进行了封装(HttpServletResponse),并在调用Controller方法的时候传递给了该方法。这样,就使得程序员不必直接对协议进行操作,让Web开发更加便捷。

image

有两种方式:

image

方式一:

package com.example.springbootwebquickstart;import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.io.IOException;@RestController
public class ResponseController {/***  方式一:HttpServletResponse 设置响应数据* @param response* @return*/@RequestMapping("/response")public void response(HttpServletResponse  response) throws IOException {//1. 设置响应状态码response.setStatus(401); //通常不用设定//2.设置响应头response.setHeader("name","itheima");//3.设置响应体response.getWriter().print("<h1>hello response</h1>");}
}

image

方式二

package com.example.springbootwebquickstart;import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.io.IOException;@RestController
public class ResponseController {/***  方式一:HttpServletResponse 设置响应数据* @param response* @return*/@RequestMapping("/response")public void response(HttpServletResponse  response) throws IOException {//1. 设置响应状态码response.setStatus(401); //通常不用设定//2.设置响应头response.setHeader("name","itheima");//3.设置响应体response.getWriter().print("<h1>hello response</h1>");}/*** 方式二:使用ResponseEntity -Spring中提供的方式* @return*/@RequestMapping("/response2")public ResponseEntity<String> response2(){return ResponseEntity.status(401) //响应状态码.header("name","javaweb-ai") //响应头.body("<h1>hello responseEntity</h1>"); //响应体}
}

image

注意:响应状态码和响应头如果没有特殊要求的话,通常不手动设定。服务器会根据请求处理的逻辑,自动设置响应状态码和响应头。

image

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

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

相关文章

CF125E MST Company

按照和 P2619 一样的方法,将连有 \(1\) 的边看作白边,其他边为黑边,随便 WQS 二分一下即可。

Git分支合并

在开发中,我们需要独立的分支进行独立开发,开发测试完之后没问题,往master合并的操作 Git分支合并(别的分支合并到master)bash # 切换到 master 分支 git checkout master# 从远程拉取最新的 master 分支代码(如…

西林瓶灌装机质

在制药、生物试剂及精细化工等行业,设备选型常面临需求与产品错配、技术参数混乱、售后响应滞后等核心痛点。尤其针对西林瓶灌装机这类高精度设备,一旦出现质量问题,不仅影响生产效率,更可能造成整批产品报废。因此…

基于Newmark-β法的单自由度体系地震响应MATLAB实现

基于Newmark-β法的单自由度体系地震响应MATLAB实现一、算法原理与公式 单自由度体系运动方程:Newmark-β法递推公式:预测步:校正步:二、MATLAB核心代码实现 function [time, disp, vel, acc] = Newmark_SDOF(m, c…

无监督学习驱动的遗留系统重构专业的方法论

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Cortex-M3 内核 MCU-STM32F1 构建之路:(一)单片机 MCU 的构成,包括 FLASH 和 SRAM 的区别,以及引脚类型

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

证书的格式转化

Windows server 颁发给Linux的证书一般为p7b格式 流程图:在centos8中把p7b证书转发成pem格式的证书 假设p7b证书在/etc/ssl/certs中 证书的名字: certnew.ceropenssl pkcs7 -inform der -in /etc/ssl/ce…

P14480 化作彗星 题解

Description 为了再现那日的彗星,Nana 和 Lily 需要使用特定的数对把一个序列变成另一个序列。 Nana 有一个长度为 \(n\) 序列 \(a\),Lily 每次可以选择一个下标 \(i(1\le i<n)\),然后操作 \(a_i\leftarrow x,a_…

PG系列:Select查询一样会被阻塞

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。在之前的理解…

物理光学中光束传输与变换的数值模拟研究

物理光学中光束传输与变换的数值模拟方法,包括各种光束模型、传输方程和变换器件的MATLAB实现。 光束传输理论基础 1. 标量波动方程 从麦克斯韦方程组出发,得到亥姆霍兹方程: \(∇E + kE = 0\) 其中 \(k = 2π/λ\)…

Oracle升级回退:10.2.0.4 crs升级到11.2.0.4 回退方案

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle升级回…

精度、正确率、召回率的简单理解

通俗版 想象地上散落了一片红色绿色的小石子,弯腰闭眼任意拿取(类比预测过程)一些后,地上和手里都有红色和绿色石子,此时石子分为四类:手里绿、手里红、地上绿、地上红。 我们假定绿色是我们想要的,红色是不想要…

西林瓶粉末灌装机:舟山备件更换快,紧急可加急发货

在制药及生物制剂设备选型过程中,采购方常面临产品功能与实际产线需求错位、技术参数筛选标准混乱、备件响应周期不可控等核心痛点。尤其对于西林瓶灌装机这类高精度设备而言,一旦关键部件出现损耗或故障,若无法及时…

制作自己的最小操作系统

自制一个linux系统 前言 谁不想要一个自己的系统呢? 现在做一个可以直接在虚拟机VMware上安装运行的系统. 文件信息:在VMware运行qemu原理 一个完整的系统组成:引导文件,内核,文件系统 linux系统启动的大致过程:…

.NET 10性能突破:持续优化才是质变关键

.NET 10性能突破:持续优化才是质变关键2025年11月12日,微软在.NET Conf 2025正式发布了.NET 10。 作为一个长期支持(LTS)版本,它将获得为期三年的官方安全补丁与服务支持,直至 2028 年 11 月 10 日, 官方称其为…

MySql批量导入csv文件

前置条件:因为在数据库在云端,且测试数据库与生产数据库不一致,索性就在本地搭建一个MySql数据库,把生产的可用数据导入到本地,方便本地测试。当然要注意一点,csv文件是没有建表语句的,需要你先建表 步骤1:启用…

win1125h2使用和优化技巧

win1125h2使用和优化技巧 技巧一、首次配置,绕过强制输入微软ID 方法一:利用专业版、企业版独有的域设置,但家庭版没有此功能 选择“为工作或学校设置”选项,而不是“为个人使用设置” 登录选项中,选择“改为域加…

植物大战僵尸经典版下载教程:重新体验最纯粹的塔防乐趣

前言: 在过去的十多年里,《植物大战僵尸》已经成为一代玩家共同的电脑记忆。 这款体量不大的塔防游戏,不靠华丽的画面和复杂的系统,却凭借扎实的节奏设计与无数细节成为了塔防游戏的经典代表。 如今互联网上有非常…

rsync安装部署

OS:Centos 7服务端ip:192.168.1.134客户端ip:192.168.1.135##########################服务端部署####################################1.安装rpm -qa rsync#安装 yum -y install rsync 2.配置rsync软件配置文件more …

PG预写式日志解码的艺术与应用

本文整理自 IvorySQL 2025 生态大会暨 PostgreSQL 高峰论坛的演讲分享,演讲嘉宾:李传成,walminer 作者。本文内容主要包括:逻辑解码的基本原理 高级逻辑解码特性 walminer 数据恢复实战 walminer pgto server 实战…