JavaWeb(6)之Tomcat&Http

web的概述

什么是web

在这里插入图片描述

什么是Javaweb

使用就java语言进行web开发

软件架构

  • CS结构的软件
    CS: Client/Server 客户端和服务器,这种软件往往需要安装。比如QQ、迅雷、播放器。

优缺点:

优点:
可以减轻服务器端压力,将部分代码写到客户端。
界面很美观。

缺点:
一旦服务器更新了,客户端也需要更新。
分布式开发比较弱。

  • BS结构的软件
    BS: Browser/Server 浏览器和服务器,这种软件不需要安装,只需要通过浏览器就可以访问。

优缺点:

优点:
服务器一旦更新,不需要更新客户端,因为客户端就是浏览器。
比较强的分布式能力。

缺点:
服务器端压力会比较大。
界面效果不如Cs结构软件。

现在的软件,一般都是朝着BS结构发展的。

web服务器

服务器:是硬件和软件的结合
硬件:其实就是一台电脑(这台电脑配置要求很高)。
软件:需要在这台电脑上安装web服务器的软件。

常见的web服务器

Tomcat: Apache组织提供的一个开源的免费的web服务器。满足EE的Servlet和JSP的规范。

WebSphere : IBM公司开发的一个收费的大型web服务器。满足了EE开发的所有规范。

Weblogic: BEA公司开发的一一个收费的大型web服务器。满足了EE开发的所有规范。

IIS:应用在.NET平台上。

Apache:应用在PHP平台上。

web开发中的资源

  • 静态web资源:
    HTML
    CSS
    JS

  • 动态web资源:
    Servlet、JSP
    PHP
    ASP

Tomcat的概述及安装

什么是Tomcat

在这里插入图片描述
Tomcat是一个web服务器,可以用来发布web项目。

Tomcat的安装

Tomcat的安装

Tomcat的安装注意事项

java环境变量的配置

Tomcat运行需要依赖Java 环境,也就是说需要在电脑上安装了JDK之后才可以安装和启动Tomcato因为Tomcat启动的时候需要使用JRE的环境。必须要配置JAVA_ HOME环境变量,如果没有配置JAVA_ HOME环境变量,那么服务器在启动的时候就会一闪然后关闭。

Tomcat端口冲突的问题

如果电脑上安装了一个应用之后,有可能会占用Tomcat的端口,如果将Tomcat端口占用了,同样这个Tomcat启动不了的。Tomcat默认的端口号是8080一般80端口容易被其他程序所占用。因为80端口是HTTP协议的默认端口(可以省略)。

解决办法:

  1. 将占用端口的程序结束掉
  2. 改变自身端口号

Tomcat的目录结构

Tomcat的目录结构
在这里插入图片描述

Tomcat项目发布

项目发布中文乱码问题

一-直接将项目复制到tomcat/webapps下

  1. 先创建一个项目,在项目中创建一个静态页面index.html
    在这里插入图片描述
  2. 将项目复制到tomcat/webapps目录下
    在这里插入图片描述
  3. 然后启动Tomcat
    在bin目录下启动
    在这里插入图片描述
  4. 在浏览器访问:http://localhost:8080/aaa/index.html
    在这里插入图片描述

二-在tomcat/conf/server.xml配置tomcat的虚拟路径。

虚拟路径:配置一个名称与一个真实的路径进行绑定,然后访问这个名称从而找到真实路径。
此方法并不推荐使用,推荐使用第三种方法。

  1. 先创建一个项目,在项目中创建一个静态页面index.html,这个项目可以在磁盘中的任何位置。
    我的位置是在D:\bbb
    在这里插入图片描述
  2. 配置虚拟路径
    在conf\server.xml文件中的< Host > 标签中,添加一个< Context >标签,在< Context >标签中添加path属性和docBase。
    path设置虚拟路径,docBase设置真实路径。
    在这里插入图片描述
  3. 然后启动Tomcat
    在bin目录下启动
    在这里插入图片描述
  4. 浏览器访问:http://localhost:8080/wxw/index.html
    在这里插入图片描述

三-在tomcat/conf/Catalina/localhost/下配置tomcat的虚拟路径。

第三种方式也需要配置虚拟路径,第二种需要修改server.xml。
server.xml是tomcat的核心配置文件,一旦修改错了 ,那么tomcat服务器就会出现问题,推荐使用第三种配置方式。

  1. 先创建一个项目,在项目中创建一个静态页面index.html,这个项目可以在磁盘中的任何位置。
    我的位置是在D:\ccc
    在这里插入图片描述
  2. 创建一个xml(在conf\Catalina\localhost)
    在这里插入图片描述
  3. 设置虚拟路径
    编辑wxw.xml
    在这里插入图片描述
    文件的名称就是虚拟路径(lol), 只需要访问lol就可以访问D:\ccc这个路径。
  4. 启动Tomcat,访问项目
    在bin目录下启动
    在这里插入图片描述
    http://localhost:8080/lol/index.html
    在这里插入图片描述

Eclipse中集成Tomcat

Eclipse中集成Tomcat

Tomcat虚拟主机的配置之网站访问的过程

访问一个网页的全过程详解
一级域名和二级域名的区别
hosts文件
DNS服务器:
DNS服务器也叫域名解析器,而域名和IP地址是呈键值对形式的。

什么是DNS解析?当用户输入一个网址并按下回车键的时候,浏览器得到了一个域名。而在实际通信过程中,我们需要的是一个IP地址。因此我们需要先把域名转换成相应的IP地址,这个过程称作DNS解析。

DNS服务器在哪?
本地域名服务器应该是大型单位或当地的网络运营商拥有;主域名服务器应该归网通、电信这种等级的主干运营商或政府所有;至源于全球的13组根域名服务器,1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲知2个,位于英国道和瑞典,亚洲1个,位于日本,由互联网域名与号码分配机构ICANN统一管理。

在这里插入图片描述

在这里插入图片描述

Tomcat虚拟主机的配置之虚拟主机的配置

Tomcat配置虚拟主机

虚拟主机的概述

虚拟主机:在电脑上设置一个目录(真实目录), 使用一个名称与该目录进行绑定。这个名称路径称为是虚拟主机。主机是可以发布web项目的。

虚拟主机的配置

1. 抓取百度的页面

访问百度官网baidu.com,然后另存为。
也可以是一个web项目。

2. 创建一个路径(虚拟主机)

在这里插入图片描述
这里的baidu是虚拟主机的目录, website 是项目名称,将抓取的百度页面放入其中。

3. 配置Tomcat的虚拟主机

在conf\server.xml中配置虚拟主机,复制一段 < Host >标签然后将name和AppBase属性更改。
在这里插入图片描述

4. 修改本地hosts文件

Windows本地hosts文件位置:C:\Windows\System32\drivers\etc\hosts

首先要知道自己本地的IP地址
在cmd中输入ipconfig /all
在这里插入图片描述
在hosts文件中添加,本机的IP地址和域名
在这里插入图片描述

启动服务器访问项目

在这里插入图片描述
https://www.baidu.com:8080/website/baidu.html
这里显示此站点不安全是因为我使用的http协议会过滤没有ssl证书的网站。
Tomcat配置SSL证书
在这里插入图片描述
访问时还要输入:8080/website/baidu.html,真正的是百度是不需要输入这些的,那就把这些去掉。

修改端口号

HTTP、HTTPS常用的默认端口号
将Tomcat的conf\server.xml的8080修改为443,这样就不用输入8080了,因为443是https默认的端口号。
在这里插入图片描述

将路径中的项目名去掉

在< Host >中添加< Context >,并添加属性path和docBase
在这里插入图片描述

配置默认首页

在Tomcat的conf\web.xml中最下面添加默认首页
在这里插入图片描述
全部三项都修改和添加完后就可以直接使用www.baidu.com访问了。
在这里插入图片描述

HTTP协议的概述

什么是http协议

http协议详解
HTTP与HTTPS的区别,详细介绍
在这里插入图片描述
HTTP协议:规定了浏览器和服务器端的数据交互的格式。
浏览器向服务器传输什么样格式的数据服务器可以接受,服务器给浏览器回什么样的格式的数据,浏览器可以把它显示,这些都是http协议规定的。

http的特性

  • 基于请求和响应模型
    必须要先有请求,后有响应
    请求和响应必须成对出现
  • 简单快捷
    因为发送请求的时候只需要发送请求方式和请求路径即可

http的版本

http各版本的区别

http协议的抓包分析

创建页面:

demo1

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>demo1</h1>
	<form action="demo2.html">
		姓名:<input type="text" name="name"><br/>
		性别:<input type="text" name="name"><br/>
		<input type="submit" value="提交">
	</form>
</body>
</html>

demo2

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>提交成功</h1>
</body>
</html>

请求部分:

****get方式提交
GET /web_test/demo2.html?name=zhangsan&name=man HTTP/1.1

Host: localhost:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 Edg/81.0.416.58
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/web_test/demo1.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: Idea-1bf988ba=ad8b0c71-b8ea-42c6-a73a-d5125a46da80; _ga=GA1.1.254690400.1585889179
****post方式提交
POST /web_test/demo2.html HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 22
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 Edg/81.0.416.58
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/web_test/demo1.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: Idea-1bf988ba=ad8b0c71-b8ea-42c6-a73a-d5125a46da80; _ga=GA1.1.254690400.1585889179

name=zhangsan&name=man

响应部分:

HTTP/1.1 200
Accept-Ranges: bytes
ETag: W/"148-1587308754990"
Last-Modified: Sun, 19 Apr 2020 15:05:54 GMT
Content-Type: text/html
Content-Length: 148
Date: Sun, 19 Apr 2020 15:23:08 GMT
Keep-Alive: timeout=20
Connection: keep-alive

http协议之请求部分

请求部分可以分成三块

在这里插入图片描述

  1. 请求行

请求方式
请求方式有很多种,常用就两种GET和POST

GET和POST的区别?
GET:请求的参数会显示到地址栏。通常是有大小的限制。没有请求体

POST:请求的参数不会显示到地址栏(在请求体中)。POST没有大小的限制。有请求体(请求参数)。

请求路径

协议版本

  1. 请求头
    请求头的格式一般都是一个 key对应一个 value的,也有一个key对应多个value的情况。

记住一些请求头:
Referer,: 代表网页的来源。(防盗链)。

User-Agent: 获得客户端浏览器类型。
5. 请求体
只有POST请求方式才有请求体,而且请求体是POST方式请求参数。

http协议之响应部分

响应部分分成三块内容

在这里插入图片描述

  1. 响应行
     协议版本
     状态码
      200:代表响应成功
      302:需要进行重定向操作
      304:需要查找本地缓存
      404:请求资源不存在
      500:服务器内部错误
     状态码描述
  2. 响应头
     响应头的格式一般都是一个key对应一个 value的,也有一个key对应多个value的情况。

记住响应头:
  Location :重定向的路径。
  Refresh : 定时刷新。
  Content-Disposition:文件下载的时候使用。
3. 响应体
就是显示到浏览器页面的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值