精华内容
下载资源
问答
  • 在浏览器页面查找关键词
    千次阅读
    2021-06-12 13:51:20

    怎样在网页里查找关键字以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    37f4b4e7457fe25d170d3d73c7724f7f.png

    怎样在网页里查找关键字

    风狂威,你好,你可以尝试在“编辑”菜单中选择查找,或者利用Ctrl+F快捷键进行查找。

    怎样在网页上边出现查找关键字的那个框

    你说的是什么意思?

    如何查找网页中的关键字?

    分析网站,当给出一个网站时,我们就需要分析网站的客户群所在,以及客户搜索的关键词定位,这是很重要的阶段。我们可以通过百度指数分析出可能的关键词的大概搜索量,再斟酌关键词的先后顺序。作为站长的都说网站的标题是致命的,是最重要的,那为什么这么说呢?我认为认为百度对网站关键的重心读取在网站标题上,关键词的权重传递从左到右依次减小,然后是一级域名权重大于二级域名,二级域名权重大于二级目录,二级目录大于**目录,这是站长们共同认识的,关键字写好了,没有访问,没有优化也是不行,通常情况下站长都会用旺道优化软件来优化网站的一个排名。

    按键精灵在网页查找关键字的脚本是什么?

    用这个子程序:

    Else

    xmlUrl = 网页地址

    End if

    Set xmlHttp = CreateObject("Microsoft.XMLHTTP")

    xmlHttp.Open "Get", xmlUrl, False

    xmlHttp.Send

    xmlBody = xmlHttp.ResponseBody

    Set xmlHttp = Nothing

    获得网页源文件 = ""

    If Len(xmlBody) = 0 Then Exit Function

    Set ObjStream = CreateObject("Adodb.Stream")

    With ObjStream

    .Type = 1

    .Mode = 3

    .Open

    .Write xmlBody

    .Position = 0

    .Type = 2

    .Charset = "UTF-8"

    BytesToBstr = .ReadText

    .Close

    End With

    Set ObjStream = Nothing

    获得网页源文件 = BytesToBstr

    End Function;

    怎样查找关键字排名

    百度一下就得了

    如何用iOS设备中的Safari在网页上查找关键字

    通常我们在电脑上使用浏览器查找网页上的关键字是很方便的。其实在 iOS 设备中的 Safari 浏览器中也可以的,不管是 iPad、iPod Touch、还是 iPhone 都可以在网页中查找关键字。

    工具/原料

    iPhone、iPod Touch、iPad

    在iPhone中的Safari中查找关键字

    1

    首先打开 iPhone 上的 Safari 浏览器,点击右上角的“搜索框”,如图所示

    2

    然后在“搜索框”中输入我们想要查找的关键字。如果网页中有我们输入的关键字的话,会看到“在此页有多少个匹配”。然后用手指向上滑动,如图所示

    3

    接下来就会看到“在此页有多少个匹配”下方有查找关键字的的选项,点击显示关键字,如图所示

    4

    然后,我们就会看到在 Safari 浏览中会以高亮突出来显示我们查找的“关键字”,如图所示

    5

    在 Safari 浏览器的底部,会有一个查找关键字的功能条。

    一、底部最左边的“完成”按钮,可关闭查找关键字功能

    二、中间显示的是在此页一共有多少个关键字

    三、底部最右边是向前或向后依次显示关键字的图标按钮

    如图所示

    END

    在iPad中的Safari中查找关键字

    首先打开 iPad 上的 Safari 浏览器,点击右上角的“搜索框”,如图所示

    然后在“搜索框”中输入我们想要查找的关键字。如果网页中有我们输入的关键字的话,会看到“在此页有多少个匹配”。点击“在此页有多少个匹配”下方的查找关键字,即可显示网页上的关键字,如图所示

    iPad 与 iPhone 在搜索上有一点区别,除了我们可以在右上角的搜索框中输入查找关键字以处,还可以直接在键盘上方的“搜索框”中输入想要查找的关键字,如图所示

    步骤阅读

    在 Safari 浏览器的底部,会有一个查找关键字的功能条。

    一、底部最左边是向前或向后依次显示关键字的图标按钮

    二、中间显示的是在此页一共有多少个关键字

    三、在底部最右边的“完成”按钮,可关闭查找关键字功能

    怎样在文件中查找关键字?

    这种包含文件,估计只能搜索文本文件,其它的文件,估计它无难为力了在文件中找关键字,除了文本文件外,其它的文件,估计难以实现

    360和搜狗 浏览器网页查找某些关键字在哪

    如果是搜索网页上的内容。直接在地址栏或右边的搜索栏搜索即可。

    如果是页面内,搜狗浏览器在菜单-文件-在页面内查找。

    分页:123

    更多相关内容
  • 基于js实现ctrl+F的页面搜索,并且有亮色标明搜索的关键词
  • 在上一节中(Python实现网页自动化-初步使用(一))已经部署了Selenium+chromedriver的开发环境,真正的开发之前,还需要学会利用浏览器查找网页元素; 因为Selenium是通过程序来自动操控网页的控件元素,比如...

    前言

    在上一节中已经部署了Selenium+chromedriver的开发环境,在真正的开发之前,还需要学会利用浏览器来查找网页元素;

    因为Selenium是通过程序来自动操控网页的控件元素,比如单击某个按钮、输入文本框内容等,若网页中有多个同类型的元素,好比有多个按钮,想要Selenium精准地单击目标元素,需要将目标元素的具体信息告知Selenium,让它根据这些信息在网页上找到该元素并进行操控。

    浏览器开发者工具讲解

    网页的元素信息是通过浏览器的开发者工具来获取。以Google Chrome为例,在浏览器上访问(https://www.qq.com/),然后按快捷键F12打开Chrome的开发者工具(部分电脑要用 fn +12 ),

    可以看到,开发者工具的界面共有9个标签页:

    分别是Elements、Console、Sources、Network、Performance、Memory、Application、Security和Audits。

    开发者工具以Web开发调试为主,如果只是获取网页元素信息,只需熟练掌握Elements标签页即可。

    Elements标签页允许从浏览器的角度查看页面,也就是说,可以看到Chrome渲染页面所需要的HTML、CSS和DOM(Document Object Model)对象。

    此外,还可以编辑内容更改页面显示效果,它一共分为两部分,左边是当前网页的HTML内容,右边是某个元素的CSS布局内容,查找元素信息以左边的HTML内容为主。

    HTML相关知识讲解

    在查找控件信息之前,首先了解HTML的相关知识;

    HTML是超文本标记语言,这是标准通用标记语言下的一个应用,“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。

    超文本标记语言的结构包括“头”部分(Head)和“主体”部分(Body),其中“头”部分提供关于网页的信息,“主体”部分提供网页的具体内容。通过一个简单HTML来进一步了解:

    #声明为HTML5标准的文档
    <!DOTYPE html>
    #元素是html也没的根元素
    <html>
    #包含了文档部分的元(meta)数据
    <head>
    #提供主要页面的元信息,主要是描述和关键词
    <meta charset="utf-8">
    #元素描述了文档的标题
    <title>编程技术圈</title>  
    </head>
    #元素包含了可见的页面内容
    <body>
    #定义一个一级(h1)标题
    <h1>我的一级标题</h1>
    #定义一个段落(p标签)
    <p>我的第一个段落</p>
    </body>
    </html>

    一个完整的网页必定以<html></html>为开头和结尾。

    一、整个HTML可分为两部分:

    (1)<head></head>是对网页的描述、图片和JavaScript的引用。

    <head>元素包含所有的头部标签元素,在<head>元素中可以插入脚本(scripts)、样式文件(CSS)及各种meta信息,该区域可添加的元素标签有<title>、<style>、<meta>、<link>、<script>、<noscript>和<base>。

    (2)<body></body>是网页信息的主要载体。

    该标签下还可以包含很多类别的标签,不同的标签有不同的作用,每个标签都是以<>开头,以</>结尾,<>和</>之间的内容是标签的值和属性,每个标签之间可以是相互独立的,也可以是嵌套、层层递进的关系,根据这两个组成部分就能很容易地分析整个网页的布局。其中,<body></body>是整个HTML的重点部分。

    二、“主体”部分(Body)的使用方式,我们进行详细分析,说明如下:

    (1)<h1>、<div>和<h2>是互不相关的标签,三个标签之间是相互独立的。

    (2)<div>标签和<div>里面的<p>标签是嵌套关系,<p>的上一级标签是<div>。

    (3)<h1>和<p>是两个毫无关系的标签。

    (4)<h2>标签包含一个<p>标签,<p>标签再包含一个<a>标签,一个标签可以嵌套多个标签。

    除上述示例的标签之外,大部分标签都可以在<body></body>中使用,常用的标签如下表:

    使用浏览器查找元素

    大致了解了HTML的结构组成,接下来使用开发者工具来查找网页元素,

    比如查找腾讯网的搜索框在HTML里所在的位置,我们可以单击开发者工具的“小箭头按钮”按钮,然后将鼠标移到网页上的搜索框并单击,最后在Elements标签页里自动显示搜索框在HTML里的元素信息,具体操作如图:

    从图上可以看到,网页中的搜索框是由<input>标签生成的,该标签的上一级标签是<div>。<input>标签有属性id、name、size和maxlength等,这些属性值是这个<input>标签特有的,我们可以通过这些属性值来告诉Selenium,让它根据这些属性值去操控这个搜索框。

    展开全文
  • 一、URL解析 1、地址解析 浏览器会根据你的输入来判断该输入是一条合法的URL,还是需要被搜索的关键词。...浏览器会先检测是否缓存了目标URL的页面,如果有且缓存未过期,则直接展示缓存页面,无需再向

    一、URL解析
    1、地址解析
    浏览器会根据你的输入来判断该输入是一条合法的URL,还是需要被搜索的关键词。并且根据你输入的内容进行自动完成、字符编码等操作。
    2、其他操作
    目前大部分浏览器都会强制客户端使用HTTPS协议以保证信息传输的安全性。同时还会进行一些额外的操作,比如安全检查、访问限制等。
    3、缓存检查
    浏览器会先检测是否缓存了目标URL的页面,如果有且缓存未过期,则直接展示缓存页面,无需再向服务器进行请求。
    在这里插入图片描述

    二、DNS解析
    DNS解析是寻找所需要的资源的IP地址的过程。因为互联网中每一台连网的机器都有唯一IP作为标识,但是它是一串数字,记忆太过困难。所以就需要将网址和IP地址进行转换,也就是DNS解析。其具体步骤如下。
    在这里插入图片描述

    1、查询缓存
    我们的浏览器、操作系统、路由器都会缓存一些URL对应的IP地址,统称为DNS高速缓存。这是为了加快DNS解析速度,使得不必每次都到根域名服务器中去查询。
    2、递归解析
    输入www.baidu.com网址后,首先在高速缓存中查找,没找到去根域名服务器查找,没有再去com顶级域名服务器查找,依次类推,直到找到IP地址,然后把它记录在本地告诉缓存中,供下次使用。
    大致过程就是.-> .com ->baidu.com. -> www.baidu.com.
    其中.代表根域名服务器。
    3、DNS负载均衡
    访问baidu.com的时候,每次响应的可能并非是同一个服务器(IP地址不同),一般大公司都有成百上千台服务器来支撑访问,DNS可以返回一个合适的机器的IP给用户,例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过程就是DNS负载均衡。
    三、建立TCP连接
    TCP/IP 分为四层,在发送数据时,每层都要对数据进行封装
    在这里插入图片描述

    TCP提供一种面向连接的,可靠的字节流服务,是一种可靠传输。接下来将会讲解TCP的首部、三次握手与四次挥手。
    1、TCP的首部
    TCP首部的格式如下
    在这里插入图片描述

    ● 源端口:源端口和IP地址的作用是标识报文的发送地址和返回地址
    ● 目的端口:端口指明接收方计算机上的应用程序接口
    ○ TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接
    ● 序号:是TCP可靠传输的关键部分
    ○ 序号是该报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节都有一个序号
    ■ 比如一个报文段的序号为300,报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性
    ● 确认号:ack,用于指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到
    ○ 确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0
    ● 首部长度/数据偏移:占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远
    ● 保留:占6位,保留今后使用,但目前应都位0
    ● 控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能
    ○ URG:紧急。当URG=1时,表明紧急指针字段有效。告诉系统此报文段中有紧急数据
    ○ ACK:确认。当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1
    ○ PSH:推送。当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1
    ○ RST:复位。当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接
    ○ SYN:同步,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1
    ○ FIN:终止,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放
    ● 窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bits字段,因而窗口大小最大为65535
    ● 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证
    ● 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式
    ● 选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍
    ● 数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。
    2、三次握手
    在这里插入图片描述

    握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
    为什么是三次握手?两次不行吗?四次不行吗?
    为什么不是两次握手
    这是为了避免服务器建立无用连接(客户端服务器建立连接后,却不传输数据)
    如果只进行两次握手,如果客户端向服务器第一次发送的建立连接的请求因为某原因,兜兜转转绕了一大圈才到达服务器。这期间客户端因为未收到服务器的响应,就会再次发送连接请求,这时服务器收到了,向客户端发送连接请求后,连接便建立了。然后数据传输完毕后,释放连接。这时刚刚兜兜转转一大圈的建立连接的请求到了服务器,服务器收到后再次向客户端发送请求,发送后又建立了连接,但是建立连接后客户端没有再理会服务器,客户端与服务器之间没有传输数据,此时服务器的资源就会被浪费

    为什么不是四次握手
    因为通信不可能100%可靠(红军蓝军约定), 而上面的三次握手已经做好了通信的准备工作, 再增加握手, 并不能显著提高可靠性,所以只需要三次握手就足够了
    这里简单介绍一下红军蓝军约定
    红军和蓝军都想消灭一波敌人,但是单凭他们一个军队的力量都不足以消灭这波敌人,因此他们想到了一起合作,于是红军向蓝军发了一封电报,内容是约定好早上8点一起向敌军进攻,由于他们不确定蓝军是否一定能收到电报, 所以只有收到蓝军的回复之后才会进行进攻,而蓝军也是同样的想法,因为他们不确定红军一定能收到自己的回复而在约定好的时间发动进攻,所以他们只有收到红军的回复后才发动进攻….
    问怎样才能保证这次战役一定胜利呢?答案是不可能的,因为双方都对于自己发出的消息对方是否一定接收得到存在质疑,所以,这样的通信将一直进行下去,结果将是使胜利的几率一直接近100%,但是却永远达不到100%。
    3、四次挥手
    在这里插入图片描述

    ● 第一次挥手
    ○ 客户端发送一个FIN=1,用来关闭客户端到服务器的数据传送,此后客户端不会再向服务器发送数据(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,客户端依然会重发这些数据),但是,此时客户端还可以接受数据。 FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号
    ● 第二次挥手
    ○ 服务器收到FIN包后,发送一个ACK给对方并且带上自己的序列号seq,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间
    ○ 此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)
    ● 第三次挥手
    ○ 服务器发送一个FIN=1,用来关闭服务器到客户端的数据传送,也就是通知客户端,可以真正地释放连接了。由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认
    ● 第四次挥手

    ○ 客户端收到FIN后,发送一个ACK=1给服务器,确认序号为收到序号+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态
    ○ 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些
    为什么客户端最后还要等待2MSL
    确保第四次挥手服务器能够收到,同时使失效的连接请求从网络中消失
    MSL是Maximum Segment Lifetime英文的缩写,中文可以译为报文最大生存时间,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
    ● 保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失。站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器
    ● 防止类似与三次握手中提到了的已经失效的连接请求报文段出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失(最长生存MSL)。这样新的连接中不会出现旧连接的请求报文
    为什么建立连接是三次握手,关闭连接确是四次挥手
    ● 建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端
    ● 关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次
    四、发送HTTPS请求
    1、HTTP简介
    参考你每天都在使用的HTTP协议,到底是什么鬼?
    2、HTTPS简介
    在HTTP的基础上再加一层TLS(传输层安全性协议)或者SSL(安全套接层),就构成了HTTPS协议。
    HTTPS详细介绍可以参考一文带你了解HTTPS
    HTTPS如何保证可靠性
    ● 对称加密以及非对称加密
    ○ 通过非对称加密生成密钥,后面通过这个密钥进行对称加密进行传输
    ● 数字签名
    ○ 保证非对称加密时发送的公钥是被认证过的,是安全可靠的
    ● 单向Hash算法
    大致过程如下
    在这里插入图片描述

    3、HTTPS传输过程
    ● 建立TCP连接(HTTP)
    ● 将HTTP请求转换为HTTPS请求,转到HTTPS网站
    ○ 因为一般人输入网址时,都是输入如www.baidu.com,而不会输入https://www.baidu.com。这时默认使用的是HTTP协议,浏览器会帮我们自动转换为HTTPS协议
    ● 建立新的TCP连接(HTTPS)
    ○ 因为HTTP与HTTPS的端口不同。HTTP使用80端口,HTTPS使用443端口
    ● 完成一系列的协商工作
    ○ 完成加密套件的协商和证书的身份确认,这次交互客户端和服务端会协商出相同的密钥交换算法、对称加密算法、内容一致性校验算法、证书签名算法等等。浏览器获取到证书之后,也要验证证书的有效性,是否过期是否撤销
    ● 浏览器获取CA域名
    ○ 如果没有CA域名的缓存,还需要进行DNS解析
    ● 再次建立新的TCP连接(CA域名)
    ● 发送OCSP请求
    ○ OCSP全称是Online Certificate Status Protocol,在线证书状态协议,顾名思义用来获取证书状态的请求,这里的状态包括有效、过期、未知。并且可以宽限一段客户端访问证书的时间
    ● 进行密钥协商
    经过以上过程后,便可以进行数据的对称加密传输了。
    五、查询MAC地址
    这一步主要负责为打包好的数据+TCP首部+IP首部寻找传输路线,找到IP对应的物理机,这里会用到ARP协议。
    1、ARP协议
    ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。
    2、ARP如何交互
    ARP协议通过一问一答实现交互,但是问和答都有讲究,问是通过广播形式实现,答是通过单播形式。

    以上都是计算机网络的部分,接下来将介绍服务器如何接收与处理请求

    六、请求在Tomcat中的处理流程
    Web 容器以进程的方式在计算机上运行,它主要负责接收请求,并将其投送至特定的应用,但Web容器并不属于计算机网络的组成部分。接下来将以Tomcat为例介绍Web容器的核心组件。
    1、Tomcat的核心组件
    Tomcat的核心组件主要有:Server、Service、Connector、Engine、Host和Context。
    一个Server可以包含多个Service,一个Service可以包含多个Connector,但只能包含一个Engine,一个Engine可以包含多个Host,一个Host可以包含多个Context。
    它们之间的关系如下图所示
    在这里插入图片描述

    配置文件的结构如下

    <Server>                              
        <Service>
            <Engine>
                <Host>
                    <Context />
                </Host>
                <Host>
                    <Context />
                </Host>
            </Engine>  
            <Connector />
            <Connector />
        </Service>
    </Server>
    

    Server
    Server 是整个配置文件的唯一根元素,代表整个 Tomcat 容器。Server 内部可以包含多个 Service,其主要职责就是管理多个 Service,对外提供给客户端访问,同时维护所有 Service 的生命周期,包括初始化服务、结束服务、定位客户端要访问的 Service 等等。
    Service
    Service 的主要职责就是将 Engine 与 Connector 装配在一起对外提供服务。一个 Service 可以包含多个 Connector,但只能包含一个 Engine,其中 Connector 负责从客户端接收请求,Engine 负责处理 Connector 接收进来的请求。
    Connector
    Connector是主要负责接收请求的组件。
    Tomcat有以下两种工作模式
    ● 作为Web服务器,直接接收客户端的请求
    ● 作为Java Web服务器,接收前置Web服务器的请求
    ![

    每个 Service 可以有一个或多个 Connector,不同工作模式下,Tomcat 需要为各种类型的请求分别定义相应的 Connector,这样才能正确接收客户端对应协议的请求。定义 Connector 可以使用多种属性,某些属性只适用于某种特定的 Connector 类型。
    一般说来,常见的 Connector 有 4 种类型
    ● HTTP
    ● HTTPS
    ● AJP
    ● Proxy
    在这里插入图片描述

    Connector作为通信接口,它为其所属特定的 Service 接收外部客户端请求,以及回送应答至外部客户端。具体职责包括创建 Request、Response 对象用于跟外部客户端交换数据,并将 Request 交给配套的 Engine 来处理。
    Engine
    Engine 是 Service 组件中负责请求处理的组件,其内部可以包含多个 Host。Engine 从一个或多个 Connector 中接收请求并处理,并将处理结果封装成应答交给 Connector,最终回传给外部客户端。
    Host
    Host 代表一个虚拟主机,它对应计算机网络上的一个实体。即某个在 DNS 服务器上注册过的域名或者 IP 地址,例如:www.baidu.com或 201.187.10.21。Host 内部可以包含多个 Context,每个 Context 表示一个 Web 应用。Host 负责安装、展开、启动和结束每个 Web 应用。
    客户端在填写目标地址时会通过主机名来标识它希望访问的服务器,Tomcat 将从 HTTP 请求头的 Host 字段提取主机名,然后再匹配对应的虚拟主机。如果没有找到匹配的,HTTP 请求将被发送至默认主机 defaultHost。
    Context
    Context 代表在特定虚拟主机上运行的一个 Web 应用,负责处理某个特定 Web 应用的所有请求。
    2、Tomcat处理HTTP请求
    当以 HTTP 请求到达Tomcat服务器(Server)以后,Tomcat会进行以下几个步骤,将请求交给对应的Web应用进行处理
    ● 根据协议类型和端口号选定 Service 和 Engine
    ○ Connector 主要负责接收请求。当 Connector 接收到特定协议和特定端口的请求后,其所属的 Service 和 Service 下的 Engine 也就确定了
    ● 根据域名或 IP 地址选定 Host
    ○ Engine一旦确定了,就会根据 IP 来选择对应的虚拟主机Host来处理请求。如果匹配失败了,则会使用默认虚拟主机来处理请求
    ● 根据 URI 选定 Context
    ○ URI 中的 context-path 指定了 HTTPS 请求将要访问的 Web 应用
    ○ 当请求抵达时,Tomcat 将根据 Context 的属性 path 取值与 URI 中的 context-path 的匹配程度来选择 Web 应用处理相应请求
    七、请求在Web应用中的处理流程
    请求被 Web 容器中的 Connector 捕获,选取对应的 Server 中的 Engine ,Engine 再根据IP选择对应的虚拟主机,虚拟主机根据URI将请求交给对应的Web应用进行处理。接下来将介绍请求在Web请求中的处理过程。
    介绍处理过程前,先对Web应用的基本组件进行简单介绍。
    1、Web应用核心组件
    Listener
    监听器 Listener 主要用于监听 Application、Session、Request 等对象的变化,每当这些对象发生变化就会回调用对应的监听方法。
    Filter
    过滤器 Filter 负责对请求做预处理,接着将请求交给 Servlet 进行处理并生成响应,最后 Filter 再对响应进行后处理。
    从请求的处理过程来看,Filter 主要参与以下几个环节
    ● 在 HttpServletRequest 到达 Servlet 之前,拦截客户的 HttpServletRequest
    ● 根据需要检查 HttpServletRequest,也可以修改 HttpServletRequest 报文头和数据
    ● 在 Servlet 生成的 HttpServletResponse 抵达客户端之前,拦截 HttpServletResponse
    ● 根据需要检查 HttpServletResponse,也可以修改 HttpServletResponse 报文头和数据
    简单来说就是在真正处理请求以及返回响应之前,通过过滤器对内容再进行一些修改
    Servlet
    Servlet 负责处理客户端访问动态资源的 HTTP 请求,接口

    javax.servlet.Servlet 定义了所有 Servlet 必须要实现的方法
    public interface Servlet {
        // 由 Servlet 容器调用,完成 Servlet 初始化,启动对外服务
        void init(ServletConfig var1) throws ServletException;
    
        // 获取 Servlet 初始化和启动时参数的配置信息对象 ServletConfig
        ServletConfig getServletConfig();
    
        // 由 Servlet 容器调用,让 Servlet 处理某个 HTTP 请求
        void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
    
        // 获取 Servlet 的说明信息,包括:作者、版本和版权等等
        String getServletInfo();
    
        // 由 Servlet 容器调用,用于关闭停止 Servlet 提供的服务
        void destroy();
    }
    

    从 HTTP 请求的处理过程来看,Servlet 主要参与以下几个环节
    ● 接收请求
    ○ 客户端请求会被封装成 HttpServletRequest 对象,包含报文头参数和报文体等信息
    ● 处理请求
    ○ 通常调用 Servlet 的方法 service、doPost 或 doGet 等方法处理请求,并进一步调用业务层相应逻辑对其进行处理等
    ● 反回响应
    ○ 处理完请求后,可以转发(forward)、重定向(redirect)到某个视图页面或者直接返回结果数据
    2、Web应用处理HTTP请求流程
    Web 应用处理 HTTP 请求的流程主要是穿越 Listener 和多个 Filters,最终抵达 Servlet 的过程,Servlet再进行下一步的处理。
    具体流程如下图
    在这里插入图片描述

    八、请求在Spring Web应用中的处理流程
    因为使用 SSM 框架,所以 Spring MVC 中的 DispatcherServlet 充当了 Web 应用中的 Serlvet,负责将任务分配给对应的Controller,并将最终视图返回给 Web 容器。
    1、Spring MVC的核心组件
    DispatcherServlet
    DispatcherServlet 是整个流程控制的中心,由它来接收请求并调用其它组件处理用户的请求,同时还负责响应结果。DispatcherServlet的存在降低了组件之间的耦合性。
    HandlerMapping
    HandlerMapping 负责根据用户请求映射获得对应的 Handler和 HandlerInterceptor。处理方法为从 URL 获得 URI,在通过 URI 从 HandlerMapping 中找到对应的 Handler 和 HandlerInterceptor,即处理器和拦截器。
    HandlerAdapter
    HandlerAdapter 负责按照特定规则去执行 Handler。
    如果 Handler 有对应的 HandlerAdapater,HandlerAdapater 则会在调用 Handler 之前执行 HandlerInterceptor 的 preHandler() 方法对 Handler 进行拦截。
    HandlerInterceptor
    HandlerInterceptor 主要负责在执行 Handler 前对其进行拦截。HandlerInterceptor 中的 preHandler() 方法将会提取 HTTP 请求中的数据填充到处理器 Handler 的中。
    Handler
    Handler 即Controller ,是处理业务代码的核心器件。这部分由程序员自行编写,一般的SSM框架中,其下层还有Service和Dao。
    2、Spring MVC处理请求流程
    当 Web 容器中的 Host 会选择对应的 Web应用来处理请求,这里将请求交给了 Spring MVC 中的 DispatcherServlet 来进一步处理请求。
    ● DispatcherServlet 通过解析 HTTP 请求的 URL 获得 URI,再根据该 URI 从 HandlerMapping 当中获得该请求对应的 Handler 和 HandlerInterceptor
    ● DispatcherServlet 根据获得的 Handler 选择合适的 HandlerAdapter。如果成功获得 HandlerAdapter,HandlerAdapater 则会在调用 Handler 之前执行 HandlerInterceptor 的 preHandler() 方法对 Handler 进行拦截
    ● Handler 即 Controller 会进行请求的处理,并向下调用 Service 和 Dao 来处理请求
    ● Hander 处理完成请求后会返回模型数据,模型数据由 DispatcherServlet 封装后返回给Web 容器
    处理的流程图如下
    在这里插入图片描述

    九、返回过程
    Web 应用处理完请求并将结果返回给 Web 容器后,容器会将响应结果返回给客户端,这是上面流程的逆过程。浏览器收到响应结果后,会对结果进行解析和渲染。这样我们就能看到浏览器给我们显示的网页了。
    十、整体流程图
    下面给出了输入URL到浏览器显示界面的流程图

    以上便是从输入URL到浏览器显示页面的整个流程
    在这里插入图片描述

    展开全文
  • Vue前端页面关键词快速搜索方法

    千次阅读 2020-04-09 00:09:34
    Vue前端页面关键词快速搜索方法 1、要达到的效果 通过搜索框里输入关键词,搜索到相对应title的订单,如下。 2、html: <el-input style="width: 350px;height:30px;padding-bottom:6px;" @input=...

    Vue前端页面关键词快速搜索方法

    1、要达到的效果

    • 通过在搜索框里输入关键词,搜索到相对应title的订单,如下。

    在这里插入图片描述在这里插入图片描述
    2、html:

    <el-input
        style="width: 350px;height:30px;padding-bottom:6px;"
        @input="searchFun"
        placeholder="快速搜索拼单"
        prefix-icon="el-icon-search"
        v-model="searchVal">
    </el-input>
    

    3、script

    export default {
      data () {
        return {
          List: [],
          token:'',
          searchVal:'', 
          searchList:''
        }
      },
      methods: {
          searchFun(){
            if(this.searchVal===''){   //如果搜索栏为空就执行getList方法获取最初始的列表
            	this.getList();
            }else{
    			//搜索
            	let list=this.List.filter(item=>item.title.toString().indexOf(this.searchVal)>=0);
                this.List=list;
            }
          },
        //页面加载时获取订单  
        getList() {
         this.$axios({
            method: 'get',
            url: '/demo/job-order/',
            headers: {
                'Content-Type': "application/json;charset=UTF-8",
                'Authorization': 'Bearer ' + this.token,
            }
          })
          .then(res=>{                    //请求成功后执行函数
            if(res.data.code === 0){
              //定义从后端获取的list
              var res = res.data.data
              this.List = res 
              console.log("获取拼单成功")
            }else{
              console.log("获取拼单失败")
            }
          })
          .catch(err=>{                   //请求错误后执行函
            console.log("请求错误")
          })
        }
      },
      created(){
      	this.token =  localStorage.getItem('token')
      },
      mounted: function () {
      	this.getList();
      },
    }
    

    4、核心代码

    searchFun(){
            if(this.searchVal===''){   //如果搜索栏为空就执行getList方法获取最初始的列表
            	this.getList();
            }else{
    			//搜索
            	let list=this.List.filter(item=>item.title.toString().indexOf(this.searchVal)>=0);
                this.List=list;
            }
          },
    

    其实最核心的应该是let list=this.List.filter(item=>item.title.toString().indexOf(this.searchVal)>=0);这行,表示获取serachVal的值并转化为字符串再去遍历list数组。

    展开全文
  • 从输入URL到浏览器显示页面的流程

    千次阅读 2021-01-12 14:23:59
    在浏览器中输入域名,敲下回车后,不一会儿浏览器就会显示我们想要的界面。本文将简单介绍这其中经历了什么过程。 注意:以下分析基于HTTP请求,并且Web容器使用Tomcat,后端框架使用SSM 一、URL解析 1、地址解析 ...
  • HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务器端。本文讨论头信息 中带缓存控制信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)中间缓存...
  • chrome浏览器自动高亮关键词插件功能自动全文高亮您指定的关键字自动全文高亮鼠标选中的关键字鼠标选中的文字自动复制到剪切板鼠标选中的链接可以点击打开鼠标选中的文字可以谷歌或百度搜索鼠标选中的文字可以用有道...
  • 过滤Flash、解除页面脚本对用户的限制、网页无级缩放、代理服务器快速切换、网页自动填表、快速保存页面内包括图片、动画、视频等任意内容、增强的页面内容查找和高亮功能、隐私保护、鼠标手势、自定义热键、地址栏...
  • .res{color:Red;}.result{background:yellow;...//用于记录每个关键词的位置,以方便跳转varoldCount= 0;//记录搜索到的所有关键词总数functionprevious(){index--;index=index< 0 ?oldCount- 1: in...
  • 相信很多人和我一样,使用浏览器搜索或者浏览网页的时候,没有仔细的考虑在浏览器的地址栏输入网址或者搜索关键词之后,浏览器和服务器到底做了什么工作。下面是一个总体的过程,其中蓝色方块的过程会进行详细的...
  • 以下方式都是在查找机器学习、深度学习相关的论文而发现的。 目录 一.https://arxiv.org/search/cs 二.semanticscholar:https://www.semanticscholar.org/search?year%5B0%5D=2014&year%5B1%5D=2019&q=...
  • 1、用户输入关键词,地址栏判断是搜索内容还是url地址。 如果是搜索内容,会使用浏览器默认搜索引擎加上搜索内容合成url; 如果是域名会加上协议(如https)合成完整的url。 2、然后按下回车。浏览器进程通过IPC...
  • 0.安装selenium + Chrome Driver 安装selenium: pip install selenium 安装Chrome Driver: ... 版本要对应(chrome://version查看版本) ...1.使用selenium模拟浏览器操作demo from selenium import webdriver impo
  • 总体的流程: DNS解析:将域名解析成IP地址 ... 浏览器解析渲染页面 结束连接:TCP四次挥手 DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP响应 浏览器解析渲染页面 TCP四次挥手 ...
  • 1. Chrome Regex Search 安装插件 2. 单击Chrome Regex Search,网页右上方弹出搜索输入框。 3. 那就这个插件里的对话框输入 张三|李四
  • 在浏览器输入 URL 回车之后发生了什么?(面试题)

    千次阅读 多人点赞 2019-09-16 14:08:34
    本文的步骤是建立,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上,尽管这是不切实际的。 大致流程 URL 解析 DNS 查询 TCP 连接 处理请求 接受响应 ...
  • 前端页面也可以写,但如果前端页面没有写,他只是留了一个空位,让我们后端去显示,我们就需要自己去编写。 首先凡是涉及到数据,我们都离不开pojo类,要写这个pojo类,我们是需要先去数据库查看一下对应的信息,...
  • 这次项目中遇到了一个要做一个搜索功能,因为项目是vue的,而且是手机端,所以对这个搜索功能的实现和能做到什么样子都没有底,网上研究了一会,发现大家的解决方法都各有特色,有引入第三方包的,有遍历的,...
  • {{ item.object.author }} - {{ item.object.desc }} {% endfor %} 启动服务器后在浏览器中输入 http://127.0.0.1:8000/search/?q=XXX XXX是要搜索的关键字 这个可不能乱输入,要看数据库里面有没有 为了提高搜索...
  • 浏览器特定指定内容手动搜索技巧,GitHub高级搜索项目
  • 一些浏览器中自带的预读功能,就是浏览器自动发现潜在的网页内容,自动缓存,以便用户快速浏览器网页,该功能手机浏览器上非常实用,但PC端较少见到,Opera浏览器就附带有这种功能,那么你知道Opera浏览器怎么开启...
  • 关键词的设置有利于增加流量,这与展示的产品数量有关。如果有更多的展览和更多的浏览量,商品被出售的可能性更高。...然后用不同的推荐关键词在搜索框中搜索,你会得到更多关键词。选择一个关键词并点击它也会在页
  • 使用intitle: 指令找到的文件才是更准确的竟争页面,如果关键词只出现在页面可见文字中,而没有出现title中,大部分情况是并没有针对关键词进行优化,也不是有力的竟争对手。 示例 intitle:利刃出鞘 就会返回页面...
  • 在浏览器地址栏输入URL之后发生了什么?eg:www.baidu.com URL解析 地址解析:首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。 https:由于安全...
  • Title Hello hello1 hello2 <span>{{sss}}</span> This is test. How are you? Fine, Thank you, and you? I'm fine, too. Thank you. ?????????????????????????????????...类似浏览器的搜索功能
  • 这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅, 注意: 本文的步骤是建立...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,877
精华内容 7,950
热门标签
关键字:

在浏览器页面查找关键词