首页 > 其他分享 >2.web(HTTP,Tomcat,SpringBootWeb)

2.web(HTTP,Tomcat,SpringBootWeb)

时间:2023-11-24 14:47:05浏览次数:34  
标签:web HTTP 请求 SpringBootWeb 响应 参数 服务器 String

web(HTTP,Tomcat,SpringBootWeb)

HTTP:

概念:

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

特点;

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

请求数据格式(request):

概述:
请求行:请求数据第一行(请求方式、资源路径、协议);
请求头:第二行开始,格式key:value;
请求体:POST请求,存放请求参数;
请求方式:
GET:请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1;GET请求大小是有限制的;
POST:请求参数在请求体中,POST请求大小是没有限制的;

响应数据格式(response):

概述:
响应行: 响应数据第一行(协议,状态码,描述);
响应头: 第二行开始,格式key:value;
响应体: 最后一部分,存放响应数据;
状态码大类:
状态码分类 说明
1xx 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx 成功——表示请求已经被成功接收,处理已完成
3xx 重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等
常见的响应状态码:
状态码 英文描述 解释
200 OK 客户端请求成功,即处理成功,这是我们最想看到的状态码
302 Found 指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304 Not Modified 告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404 Not Found 请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405 Method Not Allowed 请求方式有误,比如应该用GET请求方式的资源,用了POST
428 Precondition Required 服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429 Too Many Requests 指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large 请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500 Internal Server Error 服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503 Service Unavailable 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

状态码大全:https://cloud.tencent.com/developer/chapter/13553

Tomcat:

web服务器:

  • 对HTTP协议操作进行封装,简化web程序开发;
  • 部署web项目,对外提供网上信息浏览服务;

Tomcat概述:

  • 一个轻量级的web服务器,支持servlet、jsp等少量javaEE规范;
  • 也被称为web容器、servlet容器;
  • 官网:https://tomcat.apache.org/

基本使用:

  • 安装:直接解压;
  • 卸载:将目录直接删除;
  • 启动:bin/startup.bat
  • 停止:bin/shutdown.bat
  • 部署:应用复制到webapps目录;

SpringBootWeb:

概念:

SpringBoot,就是一个javaweb的开发框架

创建请求处理类:

1.创建springboot工程,并勾选web开发相关依赖;
2.定义HelloController类,添加方法hello,并添加注解;
	添加类的注解: @RestController;
	@RestController = @Controller + @ResponseBody;
	
3.浏览器路径: http://localhost:8080/hello

起步依赖:

  • spring-boot-starter-web
  • spring-boot-starter-test

内嵌Tomcat服务器:

  • 基于Springboot开发的web应用程序,内置了tomcat服务器,当启动类运行时,会自动启动内嵌的tomcat服务器;

请求:

概述:
  • 请求(HttpServletRequest):获取请求数据;
  • 在方法上添加注解: @RequestMapping("需要处理的请求路径,如:/hello"); 表示处理接收的请求;
  • 在类上添加注解: @RequestMapping("需要处理的请求路径,如:/hello"); 表示成为默认的公共路径;
  • 注解@RequestMapping可以通过method属性设置请求方式,例:
    • @RequestMapping(value = "/depts",method = RequestMethod.GET)
  • 注解@GetMapping或@PostMapping;
postman:
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件;
作用:常用于进行接口测试;
简单参数:
  1. 原始方式获取请求参数:
Controller方法形参中声明HttpServletRequest对象;
调用对象的getParameter(参数名);
  1. SpringBoot中接收简单参数:
请求参数名与方法形参变量名相同;
会自动进行类型转换;
  1. @RequestParam注解:
方法形参名称与请求参数名称不匹配,通过该注解完成映射;
该注解的required属性默认值是true,代表请求参数必须传递;
(@RequestParam(name="name",required=false,defaultValue="1")String username)
name指定数据库表中的字段名;
required表示请求参数是否必须传递;
defaultValue表示默认值,未指定就用这个默认值,如果指定了默认值,required会自动变为false;
注意事项:
  • @RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false;
实体对象参数:
规则: 请求参数名与形参对象属性名相同,既可直接通过POJO接收;
数组集合参数:
  1. 数组参数:
请求参数名与形参中数组变量名相同,可以直接使用数组封装;
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
	System.out.println(Arrays.toString(hobby));
	return "OK";
}
  1. 集合参数:
请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系;
@RequestMapping("/listParam")
public String arrayParam(@RequestParam List<String> hobby){
	System.out.println(hobby);
	return "OK";
}
日期参数:
使用@DateTimeFormat注解完成日期参数格式转换;
形参类型为日期类即可;
@DateTimeFormat(pattern = "与传过来的日期一致的格式");
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){
	System.out.println(updateTime);
	return "OK";
}
JSON参数:
JSON参数: JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识;
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
	System.out.println(user);
	return "OK";
}
public class User{
	private String name;
	private Integer age;
	private Address address;
}
public class Address{
	private String province;
	private String city;
}
路径参数:
路径参数: 通过请求URL直接传递参数,使用{...}来标识该路径参数,需要使用@PathVariable获取路径参数;
@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
	System.out.println(id);
	return "OK";
}

@RequestMapping("/path/{id}/{name}")
public String pathParam(@PathVariable Integer id,@PathVariable String id){
	System.out.println(id);
	System.out.println(name);
	return "OK";
}

文件上传:

前端页面三要素:
  • 表单项 type = "file"
  • 表单提交方式post
  • 表单的enctype属性 multipart/form-data
服务器接收文件;
  • 使用UUID.randomUUID()来获取不重复的文件名;
MultipartFile类:
  • 使用springbootweb中 MultipartFile类来接收文件;
常用方法:
//获取原始文件名:
	String getOriginalFilename();
//将接收的文件转存到磁盘文件中:
	void transferTo(File dest();
//获取文件的大小,单位: 字节(byte):
	long getSize();
//获取文件内容的字节数组:
	byte[] getBytes();
//获取接收到的文件内容的输入流:
	InputStream getInputStream();
SpringBoot文件上传配置:
#配置单个文件最大上传大小
spring.servlet.multipart.max-file-size=10MB

#配置单个请求最大上传大小(一次请求可以上传多个文件)
spring.servlet.multipart.max-request-size=100MB

响应:

概述:
  • 响应(HttpServletResponse):设置响应数据;
@ResponseBody:
  • 类型:方法注解、类注解;
  • 位置:Controller方法上/类上;
  • 作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应;
  • 说明:@RestController = @Controller + @ResponseBody;
统一响应结果:
public class Result{
	//响应码,1代表成功;0代表失败
	private Integer code;
	//提示信息
	private String msg;
	//返回数据
	private Object data;
	//...
}

标签:web,HTTP,请求,SpringBootWeb,响应,参数,服务器,String
From: https://www.cnblogs.com/chj020415/p/17853672.html

相关文章

  • 30. 干货系列从零用Rust编写正反向代理,HTTP的组装之旅(中间件)
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......
  • 0xGame week4-WEB wp
    0xGame个人结语完结撒花!!!学到了很多很多,算是我这个WEB菜鸡过渡期的一个见证吧。0xGame虽然也没做出来几道(大嘘),但是一步步跟着复现也学了很多好玩的知识点和思路,希望下次能进化成WEBak哥hhhhhh~~~~来看最后一周,全是java框架,麻了。spring整体不难,hint把解题方法基本写脸上了,网上......
  • 2023华为杯研究生赛awdp-web复现
    被我们web队组会狠狠push了...但是看了下这个研究生赛的题目,难度还是不高的,还不至于队里佬们打实时比赛我看着都费劲那种...........
  • 软件编程 --- 发http包
     #时间12:08#"expires_in":171205,importrequestsimportjsonfromdatetimeimportdatetimeimporttimeurl="https://jywgappthw.chinatowercom.cn:9000/workorder/bill/getBillList/"headers={"Authorization":"......
  • 全面了解 SOAP 协议和 HTTP 协议
    SOAP和HTTP 协议SOAP 协议SOAP(SimpleObjectAccessProtocol)是一种用于在节点之间交换结构化数据的网络协议。它使用XML格式来传输消息。它在HTML和SMTP等应用层协议的基础上进行标记和传输。SOAP允许进程在整个平台、语言和操作系统中进行通信,因为像HTTP这样的协议已经......
  • HTTP请求响应码详解 1XX/2XX/3XX/4XX/5XX
      转载自:https://blog.csdn.net/qq_43565087/article/details/124696787......
  • 火狐浏览器无法播放webrtc
    新安装了火狐浏览器,然后发现无法播放WebRTC。我的解决本来找了n个方法,然后发现无效,还改了建立WebRtc连接的方法,还是不行,后来发现等火狐自己把插件安装完就行了火狐安装之后,会慢慢自己安装这2个插件,自动更新,等他自动更新好之后就可以播放了。我还找过自己安装的方法,点击更新......
  • .net 温故知新【13】:Asp.Net Core WebAPI 缓存
    一、缓存缓存指在中间层中存储数据的行为,该行为可使后续数据检索更快。从概念上讲,缓存是一种性能优化策略和设计考虑因素。缓存可以显著提高应用性能,方法是提高不常更改(或检索成本高)的数据的就绪性。二、RFC9111在最新的缓存控制规范文件RFC9111中,详细描述了浏览器缓存和服务......
  • http重定向302不同端的处理方式
    当浏览器向后台发起请求时,后台返回302,此时浏览器因为请求的发起方式不同,处理302的方式也不同,下面列举常见的处理方式:参考博客:[1]关于http重定向(302)的实验https://blog.csdn.net/u010476739/article/details/115719565......
  • web的h5调起相机和选择图库怎么实现?
    在Web的H5中,要实现调起相机和选择图库的功能,你可以使用<inputtype="file">元素来实现。以下是基本的实现步骤:创建一个<input>元素,并将其类型设置为file。<inputtype="file"id="fileInput">添加capture和accept属性,以便在移动设备上调起相机和限制选择的文件类型(可选)。使用captur......