以下是我自工作以来,结合对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 textview 自动换行 整齐排版

    一.问题在哪里? textview显示长文字时会进行自动折行,如果遇到一些特殊情况,自动折行会杯具成这个样子: 上述特殊情况包括: 1)全角/半角符号混排(一般是数字.字母.汉字混排) 2)全角/半角 ...

  2. freeswitch对接其它SIP设备

    这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅. 操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 一.freeswitch作为被叫 ...

  3. 以前写的一段aop,远程接口调用的日志。

    using System;using System.Collections.Generic;using System.Linq;using System.Text; using Microsoft.P ...

  4. xcache的使用与配置

    一.安装Xcache # wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz # tar zxvf xcach ...

  5. 按照TYPE的文件导入导出功能

    /** * 导入文件Action;*/private File excelFile;// 保存原始文件名private String excelFileFileName;// 保存原始文件名priva ...

  6. centos本地yum源安装

    1.为DVD或U盘创建一个用于挂载的目录 [root@localhost ~]# mkdir /media/CentOS/ 2.查看DVD或U盘所在的路径 [root@localhost ~]# fd ...

  7. CentOS安装Nginx-1.6.2+安全配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了pcre等基础组件,具体见<CentOS安装LNMP环境的基础 ...

  8. spring 事务回滚

    1.遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误.伪代码如下: public method() { Dao1.save(Person1); Dao1.save( ...

  9. Mysql 的特殊之处

    互联网公司一般都会选择在互联网得到广泛应用的Mysql,但之前一直用微软的东东,包括数据库(MS SQLServer). 这不本以为切换数据库so easy,但是还是有些细节需要注意. 数据类型 Da ...

  10. After the exam

    离散数学考完啦!!!自我感觉还行,或许得不到高分,但是过的话是没问题了.(但愿成绩出来后不打脸) 持续了两周的复习,告一段落了.那么,今天就休息休息吧. 今天阴有雨,走过的地儿都是湿漉漉.滑溜溜的.这 ...