以下是我自工作以来,结合对C/S项目的认知,对B/S项目的一些理解。
如有不足或者错误,请各位指正。
 
 
B/S browser/server
----对于这两个软件的个人看法
本质上,也是两个软件而已。
网站(WEB)项目。我们可以看做是两个C/S软件之间的数据交流。
两个软件要进行交流,遵从的是HTTP协议。
协议的内容,具体请看:http://www.cnblogs.com/cxd4321/p/3504632.html
 

----两个软件之间的数据交流

1. 当敲下URL并按下回车,浏览器会向服务器发起一个请求。
我认为,其实也就是给服务器发了一个字符串。
这里用的应该是socket通信,参考:http://blog.csdn.net/liu_qiqi/article/details/45766289
 

2.浏览器接收到请求之后,进行内部数据处理,返回最终处理结果给浏览器。

 
3.浏览器与服务器之间的数据交流结束。
 
 

----服务器内部处理动作

 
1. 解析浏览器发过来的数据,看是否遵从HTTP协议
2. 拆出URL,request等数据,交给ASP.NET --ISAPI(IIS服务器)或者是服务器本身(tomcat)。
3. 根据路由(纯servlet、JSP网站是web.xml的servlet servlert-mapping)配置,在服务器启动的本网站项目中,查找对应的类,是否存在,如果不存在则尝试反射出来一个。
为什么不是new出来的?因为url是个字符串,new对象得有对象类。拿个字符串去创建对象,选择了反射这一条道。
 

4. 因为类对象是反射出来的,所以,为了我们的程序不出错,我们的类,都得有统一的实现的接口 ,比如 ASP.NET MVC 实现的是IController接口的 Execute(RequestContext requestContext)方法

JEE 则是实现了 Servlet 的一些方法,在Servlet中,每次调用的是service方法。

 5. 有了对象之后,由服务器自动调用,找到类及要执行的方法。
这里需要了解一下,在远古时期,动态网页是纯手写html的。
比如: 
Response.Write("<html><head></head><body></body></html>");
Response.Write("<script text='text/javascript'>alert('js alert')</script>");

这样写的字符串,先存在内存中,当执行Response.End()方法的时候,由程序员写的方法,就执行完了(应该是这样的,具体没测试过,如果有错,请大家指正)。

 
6. 在步骤5中生成的字符串,再经过进一步的包装,加上HTTP头等,拼成一个符合HTTP协议的字符串,由服务器发送给浏览器。

个人对B/S项目的一些理解(一)的更多相关文章

  1. 个人对B/S项目的一些理解(三)--Servlet与Strust

    以下是我自工作以来,结合对C/S项目的认知,对B/S项目的一些理解. 如有不足或者错误,请各位指正.   由于个人一开始入门时是ASP.NET MVC,是一个比较完善.完整的框架,下面仅对JAVA的w ...

  2. 个人对B/S项目的一些理解(二)

    以下是我自工作以来,结合对C/S项目的认知,对B/S项目的一些理解. 如有不足或者错误,请各位指正.     ----数据处理的升级   在上面的描述中,大家也看到了,远古时期的程序员,其实也听不容易 ...

  3. Tomcat 部署 Web 项目的本质理解

    手动创建Web项目 不借助集成开发工具IDE,直接手动创建一个Web项目,有助于理解Web项目的本质. 1.首先建立一个myweb文件夹(自己定义项目名). 2.然后可以建一个html文件(文件里面只 ...

  4. Python之路(四十一):通过项目来深入理解tornado

    Tornado之路   引子 与其感慨路难行,不如马上出发 目录 通过项目来深入理解tornado(一):tornado基础回顾 通过项目来深入理解tornado(二):AsyncHttpClient ...

  5. 我对SAP Business One 项目实施的理解

    一.什么是SAP: 大家都知道ERP是什么,ERP是企业资源计划管理系统.是指建立在信息技术基础上,集信息技术与先进管理思想于一身,以系统化的管理思想,为企业员工及决策层提供决策手段的管理平台.那么问 ...

  6. 项目开发设计模式理解之MVC模式

    项目开发设计模式之MVC模式: M model 模型层 V view 视图层 C control 控制器 MVC模式在B/S架构下使用很广泛的软件设计模式,分成三个相对独立的模块构成,model+vi ...

  7. 项目记录 -- config2html 理解

    html 代码: <table width=1280 border=0 cellspacing=1 cellpadding=1> <tr id=tblhdr> <td&g ...

  8. vue项目过程的理解: main.js文件理解 router.js文件理解 以及组件 路由 等之间的关系

    https://blog.csdn.net/qq_26229005/article/details/85040393 内容太多了,有空再整理

  9. 理解 IntelliJ IDEA 的项目配置和Web部署

    1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最近公司正好也是用之前自己比较熟悉的IDEA而不是Eclipse ...

随机推荐

  1. 【极品代码】一般人我不告诉他,手机端h5播放时不自动全屏代码

    已测适用于ios,某些安卓手机微信下播放视频会出现播放器控件(这个实在是无力吐槽噢,因为之前还遇到过微信播放完视频后竟然无法退出全屏出现广告的情况,只有播放完后刷新页面并且要放到框架页里才能屏蔽微信视 ...

  2. MongoDB中的数据类型

    mongoDB中存储的数据单元被称作文档.文档的格式与JSON很类似,只不过由于JSON表达的数据类型范围太小(null,boolean,numeric,string和object),mongoDB对 ...

  3. String构造器中originalValue.length>size 发生的情况

    最近在看Jdk6中String的源码的时候发现String的有个这样的构造方法,源代码内容如下: public String(String original) { int size = origina ...

  4. background-attachment属性进阶

    前提是定义了background-image属性,然后用background-attachment来指明背景图的位置是固定于视口的,还是随着包含块移动的.可简单理解为定义背景图片随滚动轴的移动方式. ...

  5. scheduletask任务调度

    1.导入jar包 2.创建entity. package cn.happy.entity; public class Plan { //时间 private String date; //任务 pri ...

  6. 00 Cadence学习总目录

    这个系列是我学习于博士CADENCE视频教程60讲时,一边学一边记的笔记.使用的CADENCE16.6. 01-03课 了解软件 创建工程 创建元件库 分裂元件的制作方法 04课 正确使用hetero ...

  7. android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

      最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示. main.xml <?xml version="1.0" encoding=" ...

  8. Node.js包管理器Yarn的入门介绍与安装

    FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...

  9. Gearman使用示例

    最近的一个旧项目重构过程中,使用到了gearman这个开源项目,简单来讲,这是一个类似MQ的异步系统,一边派发任务,一边处理任务(有类似MQ中的消息发送方与接收方),目前支持java,php等多种语言 ...

  10. 20145222《信息安全系统设计基础》Linux常用命令汇总

    学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...