以下是我自工作以来,结合对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. Android中的AlertDialog使用示例五(自定义对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  2. javascript 设置input框只读属性 获取disabled后的值并传给后台

    input只读属性   有两种方式可以实现input的只读效果:disabled 和 readonly. 自然两种出来的效果都是只能读取不能编辑,可是两者有很大不同. Disabled说明该input ...

  3. 多值(in),范围值(between..and)

    多值检测 关键词[in]   查出年龄是23,24,28 的人员信息 select * from T_Employee  where FAge  in (23,25,28) in 后面如果跟子查询, ...

  4. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...

  5. linux共享windows文件并自动化改变文件编码

    以k3日志为例: 在k3的数据库服务器进行如下操作: 1.在k3的数据库服务器导出日志数据到本地D:/K3LOG下(脚本自动化执行) 2.设置脚本定时任务每天拷贝D:/K3LOG下的文件到D:/K3L ...

  6. Windows10上安装EDEM2.7

    这次我们来安装EDEM2.7. 安装软件来自于互联网,本文仅作学习交流之用,工程应用请购买正版. 1 软件准备 从网上找到EDEM2.7安装包,解压后里面包含两个文件,如下图所示. 2 软件安装 鼠标 ...

  7. [转]Web APi之认证(Authentication)及授权(Authorization)【一】(十二)

    本文转自:http://www.cnblogs.com/CreateMyself/p/4856133.html 前言 无论是ASP.NET MVC还是Web API框架,在从请求到响应这一过程中对于请 ...

  8. appscan 对api的手工检测

    AppScan 在 API 安全测试中的实例介绍 在本项目中,API 遵循标准的的 REST 架构和背端服务器进行通信.针对 API 的功能测试由两部分组成:一部分是用一个 Web 的测试页面直接实现 ...

  9. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  10. Nhibernate mapping 文件编写

    生成工具软件 现在生成工具软件有很多了,例如商业软件:NMG.CodeSmith.Visual NHibernate,开源软件:MyGeneration.NHibernate Modeller.AjG ...