B/S系统的前台和后台数据转递机制探究
作者:朱金灿
来源: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系统的前台和后台数据转递机制探究的更多相关文章
- js前台与后台数据交互-前台调后台
转自:http://blog.csdn.net/wang379275614/article/details/17033981 网站是围绕数据库来编程的,以数据库中的数据为中心,通过后台来操作这些数 ...
- Django模板系统(非常详细)(后台数据如何展示在前台)
前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频 ...
- js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)
转自:http://blog.csdn.net/wang379275614/article/details/17049721 客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后 ...
- js前台与后台数据交互
客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...
- 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)
背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...
- 二、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)
2.收信息来到表单提交时URL所指向的servlet文件,获取传递过来的参数值
- java中产品分类返回给前台页面 后台数据组装
public ResultBean getSpfl(Integer yyb) { ResultBean res = new ResultBean(); try { JSONArray data = n ...
- C# 前台和后台POST提交信息的实现方法
一.系统A(官网)与系统B(第三方支付平台)数据交换的方式 1.1 页面浏览器方式:系统A以构造Form表单的方式,通过系统A客户的浏览器重定向到系统B(向系统B发送请求),B系统完成交易后,将交易 ...
- 前台返回json数据的常用方式+常用的AJAX请求后台数据方式
我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...
随机推荐
- android 闹钟提醒并且在锁屏下弹出Dialog对话框并播放铃声和震动
android 闹钟提醒并且在锁屏下弹出Dialog对话框并播放铃声和震动 1.先简单设置一个闹钟提醒事件: //设置闹钟 mSetting.setOnClickListener ...
- 学习笔记(二):javascript之dom操作
一.document.getElementById() 根据Id获取元素节点 <div id="div1"> <p id="p1"> ...
- JS原生选项卡 – 幻灯片效果
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- 12、python单步调试工具pdb
pdb 第4种方式是启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行状态.我们先准备好程序: # err.py s = '0' n = int(s) print(10 / n) ...
- python项目实战-小游戏1
项目规则: 1.玩家和敌人分别从现有的角色中选择3个角色 2.随机生成目前的血量,和攻击量 3.游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理 4.3局两胜 5.自定义玩 ...
- Docker---(8)Docker启动Redis后访问不了
原文:Docker---(8)Docker启动Redis后访问不了 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/ ...
- VC++ 6.0 BUG BUG BUG BUG BUG
http://blog.163.com/amao831@126/blog/#m=0 我经常在的VC++6.0中 定义某个类的对象时 再用.访问或者->访问时不自动弹出他的成员函数或者成员变量 最 ...
- Codeforces Round #450 (Div. 2) D.Unusual Sequences (数学)
题目链接: http://codeforces.com/contest/900/problem/D 题意: 给你 \(x\) 和 \(y\),让你求同时满足这两个条件的序列的个数: \(a_1, a_ ...
- 关于javascript中私有作用域的预解释
1.如何区分私有变量还是全局变量 1).在全局作用域下声明(预解释的时候)的变量是全局变量 2).在“私有作用域中声明的变量”和“函数的形参”都是私有变量 在私有作用域中,我们代码执行的时候遇到一个变 ...
- POJ 3617 Best Cow Line ||POJ 3069 Saruman's Army贪心
带来两题贪心算法的题. 1.给定长度为N的字符串S,要构造一个长度为N的字符串T.起初,T是一个空串,随后反复进行下面两个操作:1.从S的头部删除一个字符,加到T的尾部.2.从S的尾部删除一个字符,加 ...