在第一节中已经将查询服务子系统搭建起来,可以在天网搜索引擎的首页中输入搜索字符串、点击搜索按钮并得到搜索的结果页面。那后台到底是怎么处理的呢?怎么从网页获取用户输入然后调用搜索程序进行搜索呢?大家在这一节将得到答案。
我们从用户操作开始入手,首先呈现在用户面前的是天网搜索的首页,第一节中已经说明该首页的页面文件就是/var/www/html/index.html,我们先看看该文件中的部分内容,如图1所示。
图1
这里<tr>和</tr>标签中定义的内容对应于搜索页面中的输入框和搜索按钮的部分,关于HTML的详细介绍这里不做赘述,可以查看相关资料学习。这里关于HTML的内容很简单,不需要读者有很多的Web开发的知识就能理解,下面简单来看一下这段代码。
<form>定义了一个表单,简单说就是可以接受用户输入并作出动作的区域;<form>中的<input type=”text” …>一行定义了一个文本框,也就是搜索页面中的输入框;<form>中的<input type=”submit” value=”搜索” …>一行定义了一个按钮,也就是搜索页面中的搜索按钮;还有非常重要的是form标签中的属性method=”get”和action=”/yc-cgi-bin/index/TSESearch”,这里是使用CGI程序来实现对用户动作的处理,method指定向服务器提交表单使用的模式,action指定向服务器的何处提交表单,也就是由服务器的哪个程序来响应。
关于CGI的详细介绍可以参考这篇文章学习:/lewsn/article/details/8519908,一定要好好理解CGI模式,因为后面讲解的很多东西都是基于CGI的。这里只对CGI做一个简单的介绍:CGI(Common Gateway Interface,公共网管接口)是HTTP服务器与服务器上外部程序(称为CGI程序)进行交互的接口标准。CGI程序运行在网络服务器上,可以与Web服务器交互,因而可以获得Web浏览器的输入信息并执行相应的动作,也可以将结果发送给Web浏览器。简单的说,当Web服务器接收到用户的某个请求后(如搜索某个字符串),可以调用服务器上的处理程序(CGI程序)进行处理,CGI程序处理结束后可以把结果发送给浏览器进行显示。
下面继续解释上面的代码,<form>标签中定义了一个编辑框和一个按钮,当用户输入搜索信息然后点击搜索按钮后,服务器接收到用户的搜索请求后,调用CGI程序进行处理。action属性中设置的”/yc-cgi-bin/index/TSESearch”便是服务器中的CGI程序路径,在第一节中介绍过,将TSE的CGI程序默认路径设置为/var/www/html/yc-cgi-bin/index/,我们可以到该目录找到名为TSESearch的程序。说到这里大家应该清楚很多了,简单说就是,当用户提交搜索请求后,服务器调用可执行程序(称为CGI程序)来处理。
TSE系统中的TSESearch程序是从哪里来的呢?细心的朋友应该注意到,源代码文件中有一个源文件便是TSESearch.cpp,TSESearch是TSESearch.cpp编译生成的,也就是说TSESearch.cpp便是实现搜索功能的源代码文件,将在下一节中进行分析。
By: