以下是我自工作以来,结合对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. PHPmailer关于Extension missing: openssl报错的解决

    最近在写一个网页的时候,需要用到PHPmailer来发送邮件,按照官网上给出的demo写出一个例子,却报错Extension missing: openssl 最后发现需要修改php.ini中的配置: ...

  2. 转载: 黄聪:C#中 Excel列字母与数字的转换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 【MSSQL】MSSQL还原单mdf文件报1813错误

    序: MS SQL Server 2008 r2附加无ldf日志的mdf数据库时报1813错误.提示数据库被强制分离,无日志不能还原之类的话. 可能的原因: 原因系统正在执行定时作业,没有主要到多次强 ...

  4. 错误 1 类型“System.Web.Mvc.ModelClientValidationRule”同时存在于“c:\Progra

    问题如图: 解决办法: step1: 首先关闭你应用程序方案,在你保存项目的文件夹下找到ProjectName.csproj  ProjectName是你实际的应用程序名称. step2: 用文字编辑 ...

  5. MySQL 常用命令总结

    http://blog.csdn.net/hanxin1987216/article/details/5976860 一.总结 1.Linux系统下启动MySQL的命令: mysqladmin sta ...

  6. 使用Logstash进行日志分析

    LogStash主要用于数据收集和分析方面,配合Elasticsearch,Kibana用起来很方便,安装教程google出来很多. 推荐阅读 Elasticsearch 权威指南 精通 Elasti ...

  7. HTML5全屏(Fullscreen)API详细介绍

    // 整个页面 onclick=   launchFullScreen(document.documentElement); // 某个元素 launchFullScreen(document.get ...

  8. Ubuntu 14.04 LTS下安装Google Chrome浏览器

    在Ubuntu 14.04下安装Google Chrome浏览器非常简单,只要到Chrome的网站下载Deb安装包并进行安装即可.当然你也可以使用APT软件包管理器来安装Google Chrome浏览 ...

  9. Markdown简介以及常用语法

    Markdown简介以及常用语法 最近发现用markdown记录东西很方便,感觉和emacs的org mode很类似,但是windows下使用emacs不是很方便.特此记录一下markdown常用的语 ...

  10. Ural 1209. 1, 10, 100, 1000... 一道有趣的题

    1209. 1, 10, 100, 1000... Time limit: 1.0 secondMemory limit: 64 MB Let's consider an infinite seque ...