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

Web入门知识补充

Web入门

  • HTTP协议
    • HTTP
    • 请求数据的格式
    • 响应数据的格式
  • Web服务器
    • 前言
    • 创建和部署项目
    • IDEA中使用Tomcat
  • 请求响应
    • 请求
    • 响应

HTTP协议

HTTP

超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
在这里插入图片描述
简单来说,HTTP协议是浏览器和服务器之间建立好的约定,是数据传输的规则和格式,包括请求数据的格式和响应数据的格式。
HTTP协议特点:
1.基于TCP协议:面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3.HTTP请求是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的

  • 缺点:多次请求不能共享数据。Java中会采用会话技术(Cookie、Session)来解决这个问题。
  • 优点:速度快。

请求数据的格式

在这里插入图片描述

请求数据分为3部分:
1.请求行:请求数据的第一行。其中GET表示请求方式,/ 表示请求资源路径,HTTP/1.1表示协议版本。
2.请求头:第二行开始,格式为key : value形式。
常见HTTP请求头:

  • Host:表示请求的主机名
  • User-Agent:浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 … Chrome/79,IE浏览器的标识类似于Mozilla/5.0(Windows NT … )like Gecko;
  • Accept:表示浏览器能接收的资源类型。
  • Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页。
  • Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip、deflate等。

3.请求体:POST请求(特有)的最后一部分,存放请求参数。
在这里插入图片描述
GET请求和POST请求的区别:
1.GET请求的请求参数在请求行中,没有请求体,POST请求的请求参数在请求体中。
2.GET请求的请求参数大小有限制,POST没有。

响应数据的格式

响应数据分为3部分:
1.响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述。
2.响应头:第二行开始,格式为key: value形式。
常见的HTTP响应头:

  • Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
  • Content-Length:表示该响应内容的长度(字节数);
  • Content-Encoding:表示该响应压缩算法,例如gzip;
  • Cache-Control:指示客户端应如何缓存,例如max-age=300,表示可以最多缓存300秒。

3.响应体:最后一部分,存放响应数据。
在这里插入图片描述
状态码详解

Web服务器

前言

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷。Web服务器的作用:

  • 封装HTTP协议操作,简化开发。
  • 可以将web项目部署到服务器中,对外提供网上浏览服务。

Tomcat是一个免费开源的轻量级Web服务器,支持Servlet/JSP少量JaveEE规范,Tomcat也称为Web容器、Servlet容器,Servlet需要依赖于Tomcat才能运行。

创建和部署项目

使用org.apache.maven.archetypes:maven-archetype-webapparchetype创建Maven项目即可创建出相应的webapp目录,但是Maven项目的Java文件和resources文件需要手动添加:
在这里插入图片描述

然后将项目放置到/Tomcat/webapps目录下,即可部署完成。
在这里插入图片描述
一般JavaWeb项目会被打成war包,然后将war包放到webapps目录下,Tomcat会自动解压缩war文件。

IDEA中使用Tomcat

当我们在编写JaveWeb项目时,每写一点代码就要测试一下,所以每次就需要将项目打包然后放在Tomcat的webapps目录下,这个过程非常的麻烦。
(一)集成本地Tomcat
IDEA界面右上角Edit Configurations… --> Add New Configuration --> Tomcat Server --> Local --> Application Server --> Configure -->选择Tomcat的文件路径 --> Apply --> OK
(二)使用Tomcat Maven插件
在pom.xml页面右键generate,选择plugin template,然后添加以下代码:

<plugins>
	<!--tomcat的插件-->
	<plugin>
		<groupId>org.apache.tomcat.maven</groupId>
		<artifactId>tomcat7-maven-plugin</artifactId>
		<version>2.2</version>
		<configuration>
			<port>8080</port> <!--访问端口号-->
			<path>/</path>    <!--项目访问路径-->
		</configuration>
	</plugin>
</plugins>

请求响应

请求

简单参数
1.参数名与形参变量名相同,定义形参即可接收参数。

@RequestMapping("/simpleParam")
public String simpleParam(String name, Integer age){
	System.out.println(name+" "+age);
	return "OK";
}

2.方法形参名称与请求参数名称不匹配,可以使用@RequestParam完成映射

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name='name')String username, Integer age){
	System.out.println(username+" "+age);
	return "OK";
}

该注解的required属性默认是true,代表请求参数必须传递。
实体参数
1.简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可。

@RequestMapping("simplePojo")
public String simplePojo(User user){
	System.out.println(user);
	return "OK";
}

2.复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。

@RequestMapping("complexPojo")
public String complexPojo(User user){
	System.out.println(user);
	return "OK";
}

数组集合参数
1.数组参数:请求参数名与形参中数组变量名相同,可以直接使用数组封装。

@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
	System.out.println(Arrays.toString(hobby));
	return "OK";
}

2.集合参数:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系。

@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
	System.out.println(hobby);
	return "OK";
}

日期参数
使用@DateTimeFormat注解完成日期参数格式转换。

@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updatetime){
	System.out.println(updatetime);
    return "OK";
}

json参数
json数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要@RequestBody标识。

@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
	System.out.println(user);
	return "OK";
}

路径参数
通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用@PathVariable获取路径参数。

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

响应

1.@ResponseBody
位置:Controller类上/方法上
作用:将方法返回值直接响应,若返回值类型是实体对象/集合,转JSON格式响应。
2.统一响应结果
Result(code,msg,data)

相关文章:

  • 关闭超时订单和七天自动确认收货+RabbitMQ规范
  • mysql_符合查询
  • 深度学习驱动下的字符识别:挑战与创新
  • AI大模型学习(三): LangChain(二)
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • java开发工程师面试技巧
  • M系列 Mac如何安装CentOS7虚拟机(附安装包下载链接)
  • AI汽车新风向:「死磕」AI底盘,引爆线控底盘新增长拐点
  • 热管理系统:新能源汽车的 “温度管家”
  • 黑马点评_商品信息缓存模块
  • 使用vue-office报错TypeError: ft.createElementVNode is not a function
  • CSS 盒子模型:网页布局的基石
  • win11系统无法打开软件_组策略无法打开_gpedit.msc不生效_为了对电脑进行保护,已经阻止此应用---Windows工作笔记057
  • 七层模型、局域网与网络技术(高软26)
  • 谈谈 ES 6.8 到 7.10 的功能变迁(1)- 性能优化篇
  • 深度学习驱动的车牌识别:技术演进与未来挑战
  • Nginx Embedded Variables 嵌入式变量解析(2)
  • JavaWeb
  • iOS开发 网络安全
  • 简单封装一个websocket构造函数
  • 阿曼宣布美国与胡塞武装达成停火协议
  • 重庆荣昌机关食堂五一期间受热捧:肉类总消耗2万斤,单日吃卤鹅800只
  • 媒体:西安62岁男子当街殴打妻子,警方称打人者已被行拘
  • 最会说亚军感言的鲁德,站上了马德里公开赛的冠军领奖台
  • 贵州黔西游船发生侧翻事故,游客:事发时能见度只有一米,所乘船只停靠礁石避险
  • 莫斯科一机场实施临时限制措施