对web的开发,一般最多会用到三样东西,前端(HTML+CSS+JS+JSON+XML),后端(动态生成代码如servlet或其他CGI程序),数据库(Mysql等)。
web程序的应用从原始到进化
静态页面
最基础、最初的网页就是静态页面,只需要前端即可。但它没有动态交互和动态的数据存储交互功能,当需求数据需要更改时,需要更改html文档中的数据或数据分离式文档的JSON或XML文件中的数据。
这种服务器只需要使用能够正常分发文档的HTTP服务器即可,能够在用户访问文档时提供文档,不存在时返回404,设置指定目录文档的访问权限等即可。
页面的动态生成能力(动态页面)
其次可以在静态文档的基础上进行动态生成文档内容,相当于用户在访问文档时,后台服务器即时动态生成这个文档,其中有些部分的HTML代码是固定的,但在需要动态输出内容处,就可以使用程序编程语言代码生成输出数据,这个数据是由后台服务器中的动态程序决定的,常见的这样的动态程序有java的servlet、各种CGI支持语言例如PHP-CGI、C-CGI、PERL-CGI、Python-CGI等这两种动态生成HTML代码方法。
然后在页面是动态技术的情况下,还可以继续增强,接入使用数据库,进行数据的永久层存储和读取。例如接到某个请求写入数据库数据,或接到访问请求来读取数据库中的数据从而以html文档的形式将数据返回给用户。
目前主流的web容器
总结一下,可支持动态页面的web容器有:
- apache http server,
- apache tomcat,
- nginx(很小,只有几M),
- IIS,
- 以及其他业务与web容器集成为一体的web程序,如spring-boot框架写出来的程序。
除了都支持静态文档传输之外,它们的最大的共同点就是都支持CGI,因此说CGI是web动态服务器中应用很广泛的一个协议。
基于不同编程语言的设计开发部署模式
apache tomcat + Java servlet
开发tomcat的动态页面,使用Java对web程序的支持:servlet。我们在写一个web项目时,代码开发工作环境就是在eclipse下,众所周知,eclipse的代码功能很强大,开发JAVA以及其他语言用着很舒服。
我们在eclipse中创建一个web项目,然后编写每个前端资源文件(html之类的),这些前端文件可能不是eclipse的强项,可以不用eclipse写,但可以被eclipse管理到。然后编写基于servlet的动态部分,有servlet和jsp,一个servlet相当于是将用户的请求对接给servlet让servlet去处理然后返回给用户数据,类似于CGI的工作。jsp也是类似,但是jsp的方式更像是php、asp的动态代码嵌入,可以直接写html代码以示print输出,并且可以在该有动态代码的地方嵌入java动态代码,jsp也是继承servlet实现的,所以拥有servlet的所有属性。动态代码中可能会涉及到查询数据库等,目前大多数企业都只是对接了数据库,有些企业还对接了
HTTPclient,中间的过程可以随意由java代码对接。
在这项目的一切代码都写好了之后,就可以用eclipse的导出war功能,非常简单地将项目导出为.war项目包。一般将.war项目包直接丢进tomcat的webapps下,只要tomcat的配置中的自动部署功能开启着(默认开启的),过几秒钟这个war项目包就自动被tomcat给识别解析出来成一个目录了,这时候就可以访问了。
部署的方式也可以不导出war项目包,不使用tomcat的自动部署功能,而是手动地将项目文件部署到tomcat webapps下,这种方法以前试过可行,但总感觉不如自动部署的省心。
还可以直接使用eclipse的服务器管理器的操作界面,将一个项目部署到管理器下有的服务器上,不过这种方法一般只适用于开发者本机测试。
总结:总体这套web后端开发模式非常稳健。
- Java配合tomcat开发servlet式的web动态页面程序,从开发环境到部署服务器都是一连套,官方稳定提供好的,很舒服,不用怕出异常、很省心。
- Java的eclipse开发环境对开发者来说简直就像美梦一样好用。
- Java语言的面向对象建模编程思想也很好用。
个人来说,对于开发web的编程语言,php和perl、python都差不了太多。它们编写出来的都是脚本,可以通过CGI嵌入到各式各样的web容器当中去。C\C++也支持可以编写CGI程序。
下面说到PHP的时候,就代表着还有和它同类的这些脚本语言,等同于PHP+perl+python+......等支持CGI的语言。
apache + PHP
这是世界上最为广泛的web动态程序的运行模式。这个想必大家都知道,就不做过多无用的解释。
但其中一点需要提到,就是apache嵌入php可以通过CGI(FastCgi),还可以通过模块的方式,一般人们都选用模块的方式嵌入PHP。至于两者之间的效率,这个没有做过实际比较,模块是通过链接dll的形式调用PHP的,而CGI是通过调用php-cgi.exe的形式调用PHP的。
还有你下载到的PHP本身自带提供对apache的支持:一些专门为apache设计的apacheXXX24.dl。从这就可以看出,apache与php两者厂商关系甚好,处于基友关系。
在开发上,只需要用舒适的代码编辑器去写php代码即可,写好了直接扔进去web容器里即可。
IIS、nginx + PHP
统统使用CGI的协议嵌入PHP。
IIS是微软windows系统下的web服务器,商用一般运行在WinServer上。是业界唯一具有图形化界面供管理的,并对微软windows其他功能支持较好。
nginx就类似于apache,通过CGI的形式来支持php。它的整个程序中所有文件数目不多,可执行主程序和配置文件都很少,官方的管理与操作方式、命令更是舒服的很,反正至少个人看了十分的舒服,舒服的一批。
在开发上,只需要用舒适的代码编辑器去写php代码即可,写好了直接扔进去web容器里即可。
这些都是我个人用过的web开发中使用的开发技术、编程语言和web容器。供大家参考。