对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容器。供大家参考。

总结web后端或web全栈开发的多种模式和技术相关推荐

  1. 沪江python全栈开发_【沪江技术沙龙】 -- 大规模Node.js应用

    [沪江技术沙龙] -- 大规模Node.js应用 Node.js的诞生,极大扩展了JavaScript语言的使用场景.由于其采用了异步的事件模型,使Node能快速的处理IO密集型应用.随着Node.j ...

  2. 全栈开发和web开发_全栈开发人员:这是什么,以及如何成为一个完整的开发人员...

    全栈开发和web开发 一个全职的开发人员是各行各业的杰作,也是一个备受追捧的求职者. 标题暗示着知识的广度,这对于人手不足的初创公司和管理复杂应用程序的大公司而言都是无价的. 但是, 术语" ...

  3. 石家庄python开发_石家庄PythonWeb全栈开发工程师修炼

    [课程介绍] 课程以python语言为主导,进行web服务相关的全栈开发,包含后端服务器开发,部署,监控:web前端开发,前后端不分离模板模式开发,前后端分离,单独前端部署方案.课程涉及到的知识点有: ...

  4. python全栈开发实战pdf老男孩_Python教程:2017年老男孩最新全栈python第2期视频教程全套完整版...

    教程名称:2017年老男孩最新全栈python第2期视频教程全套完整版 教程目录: day01-python 全栈开发–基础篇 day02-python 全栈开发-基础篇 day03-python 全 ...

  5. python web后端和vue哪个难_全栈开发用纯后端模板与Vue+后端框架组合哪个好?

    全栈开发没有明确的定义,但应该指的就是前端+后端+数据库.所以只用纯后端框架,不算全站开发.至少在Angularjs出现以前,我没听说过全站开发这个词. 你问题描述中的感觉是对的,这就是前后端分离的好 ...

  6. 最受推荐的 9本全栈开发书籍,助web前端开发学习

    如今全栈工程师在企业工作中占有的地位越来越高,无论是前端工程师,还是后端工程师,都在拼命向全栈发展!学习的方式有很多,大部分是喜欢通过书籍来学习新知识,今天,我们一起来盘点一下全站开发的大佬都推荐些什 ...

  7. 【融职教育】Web全栈开发就业班核心优势

    IT技能培训行业现在是一片红海,在红海中求生存和发展就要具有一定的特色和竞争优势.本质上都是为学员提供更好的服务,提高教学品质,让学员可以学会技术,掌握足够工作技能,具有向企业交付的能力,让学员不仅可 ...

  8. Web全栈开发基础(小白入门版本)

    博客传送门 近几个月认真写了写Web全栈代码,有点小收获这里分享一下.我还做了个PPT,资源路径 欢迎拍砖指点! Web全栈开发是一个听起来很虎的名词.本文从技术层面解释全栈开发,能帮助没有全栈概念, ...

  9. web全栈开发项目搭建整体思路和学习路线

    web全栈开发 全栈开发技术介绍: 全栈技术指可以完整整个项目搭建的有效集合. 包括:网站的设计,web前端开发,web后端开发,数据库设计,接口和组件,移动端开发,产品设计,系统架构,产品的理念和用 ...

最新文章

  1. MQTT topic匹配规则
  2. Flutter基础知识链接汇总(持续更新中)
  3. Windows Mobile 6.5.3 Developer Tool Kit
  4. 一文读懂 K8s 持久化存储流程
  5. VTK:结构化网格之StructuredGridOutline
  6. 钢铁苍穹html5,自定义网站搜索教程
  7. 使用movetable收缩表空间
  8. 人脸特征值能存放在sql server中吗_SQL运行内幕:从执行原理看调优的本质
  9. java -jar maven项目打包提示.jar中没有主清单属性
  10. 网抑云熬夜打卡源码+微信登录+免签支付+今日打卡统计
  11. BeanUtils工具包下载及应用
  12. yum更新php版本,yum php版本太低怎么办
  13. LearnOpenGL之OpenGL特性
  14. linux自动切换tty,Linux 中不适用功能键切换TTY
  15. 在xml publisher中嵌入二维码(支持中文)
  16. dos2unix离线安装
  17. 有效需求预测的四大优势
  18. Android混淆介绍
  19. KGB知识图谱帮助金融机构进行风险预判
  20. 移动应用的必杀技:超级app+轻应用

热门文章

  1. 奋斗吧,程序员——第四十一章 今日种种,似水无痕;明夕何夕,君已陌路
  2. 【深度学习】卷积神经网络发展史从LeNet到AlexNet
  3. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和
  4. 鸿蒙系统手机好不好,华为鸿蒙系统手机好用吗 目前还未正式使用
  5. 夜神模拟器 设置代理
  6. ICV:2022年中国车载激光雷达市场规模突破1亿美元
  7. Android Messenger初探
  8. 左神数据结构与算法(基础)——表、树、图、贪心、递归
  9. Oracle 闪回特性 详解
  10. 计算机在美术学科中的应用,信息技术在美术教学中的应用