作者:朱金灿

来源:http://blog.csdn.net/clever101

说实话写这篇文章超出了我的能力范围之外(因为我并没有多少Web开发经验),我所期待的是能起一个抛砖引玉的作用——希望高手来指出我的错误,让我也学到正确的知识。之前我一直在思考这样一个问题:一个网站的前台和后台是如何进行数据传递的呢?即前台如何把用户的输入传递给后台,后台又是如何把处理结果发送回前台,比如你登录google网站,输入一个关键字,google网站如何把你输入的关键字传递给后台,然后后台根据你输入的关键字经过处理后得到搜索结果,又是如何把搜索结果发送回前台从而呈现给用户面前的呢?

今天向一个同事抛出了这个问题,感到大致明白了这一过程。B/S系统其实也是采用传统的分层架构的,分为不同的层次,需要不同的语言来配合开发的。我把网站开发所需要的语言归纳为下表:

层次及开发语言

功能

备注

静态页面层,开发语言语言:html

描述网页元素,就是你所看到的网页的样子

脚本逻辑层,开发语言:Javascript或Jscipt等

客户端的一些简单的逻辑处理,比如输入验证等

事务处理层,开发语言:C#、Java和php等

服务器端的事务逻辑处理

后台处理层,开发语言:C/C++等

服务器端的后台数据处理

不是所有的B/S系统都有这一层

一个人从登录网站输入数据到看到处理结果是这样一个流程呢?它大致是这样的:

看完上面的流程图,可能你和一样还有很多疑问:

比如,为什么需要Javascript或Jscipt这一层,直接把用户输入的数据直接提交给服务端处理岂不是更省事吗?这是因为服务器端的计算资源是很宝贵的,比如你输入一个E_mail地址,它的格式是否正确就完全可以在客户端的Javascript这一层进行判断,何须劳烦服务器端呢?这样做是为了减轻网络负担和服务器端的负担。

比如html网页是如何和C#、Java和php编写的代码绑在一起的呢?原来html网页可以指定C#、Java和php的编写的处理代码文件(jsp、php之类的)。

比如C#、Java和php编写的处理程序又是如何把用户数据传递给由C/C++编写的服务器后台处理程序的呢?方式有很多种,假如是Windows服务器的,可以考虑进程内的调用COM组件(这样做的优点是方便传输数据,缺点是安全性不好,比如容易遭受到缓冲区攻击之类的),也可以进程间调用,比如用shell命令直接起一个进程(优点是调用方便,缺点是比如linux服务器的话需要一定的授权)。也可以采用网络通信的方面,比如Java这边起一个socket,C/C++这边起一个socket接受数据进行处理。

比如C/C++编写的服务器后台处理程序又是如何把处理结果送回前台的呢?网站早存在一个空的处理结果页面,C/C++编写的服务器后台处理程序可以把处理结果填充到这个处理结果页面中。至于如何填充的细节还有待研究。

B/S系统的前台和后台数据转递机制探究的更多相关文章

  1. js前台与后台数据交互-前台调后台

    转自:http://blog.csdn.net/wang379275614/article/details/17033981   网站是围绕数据库来编程的,以数据库中的数据为中心,通过后台来操作这些数 ...

  2. Django模板系统(非常详细)(后台数据如何展示在前台)

    前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频 ...

  3. js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)

    转自:http://blog.csdn.net/wang379275614/article/details/17049721 客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后 ...

  4. js前台与后台数据交互

    客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...

  5. 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...

  6. 二、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    2.收信息来到表单提交时URL所指向的servlet文件,获取传递过来的参数值

  7. java中产品分类返回给前台页面 后台数据组装

    public ResultBean getSpfl(Integer yyb) { ResultBean res = new ResultBean(); try { JSONArray data = n ...

  8. C# 前台和后台POST提交信息的实现方法

    一.系统A(官网)与系统B(第三方支付平台)数据交换的方式 1.1  页面浏览器方式:系统A以构造Form表单的方式,通过系统A客户的浏览器重定向到系统B(向系统B发送请求),B系统完成交易后,将交易 ...

  9. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

随机推荐

  1. jsp中标签id和name的区别(转)

    name原来是为了标识之用,但是现在根据规范,都建议用id来标识元素. 但是name在以下用途是不能替代的:1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.因为有许多na ...

  2. IOS-Run loop学习总结

    不知道大家有没有想过这个问题,一个应用開始执行以后放在那里,假设不正确它进行不论什么操作.这个应用就像精巧了一样,不会自发的有不论什么动作发生.可是假设我们点击界面上的一个button.这个时候就会有 ...

  3. 学习笔记:Vue——插槽

    关于Vue插槽,只用过最简单的语法,现在完整地走一遍官方文档说明,并且探索更多用法. 01.如果组件中没有包含一个<slot>元素,则该组件起始标签和结束标签之间的任何内容都会被抛弃. 0 ...

  4. 洛谷—— P1069 细胞分裂

    https://www.luogu.org/problem/show?pid=1069#sub 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细 ...

  5. cocos2d-x中六种持续性动作

    持续性动作: (一) 位置变化动作 Move by to Jump by to (二) 属性变化动作 Scale by to Rotate by to Fade in out to Tint to b ...

  6. Android RGB颜色对比表

    一  RGB颜色对照表:        注:内容来自http://rgb.phpddt.com/   里面有在线颜色摄取器   #FFFFFF   #FFFFF0   #FFFFE0   #FFFF0 ...

  7. 第一个Python程序(全面)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.Windows系统 1.编写Python程序方式之Sublime文本编辑器: 1>打开sublime,创建hello.p ...

  8. MWPhotoBrowser 属性详解 和代理解释

    --------0.MWPhoto简单属性解释---------------- MWPhoto *photo = [MWPhoto photoWithURL:[NSURL URLWithString: ...

  9. java项目中VO和DTO以及Entity,各自是在什么情况下应用的

    j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维.     POJO(plain old java object):普通的java对象,有别于特殊的j ...

  10. Android ViewGroup使用小结

    ViewGroup定义 在api中是这么描写叙述ViewGroup的:A ViewGroup is a special view that can contain other views. 依据意思我 ...