zoukankan      html  css  js  c++  java
  • 个人对B/S项目的一些理解(一)

    以下是我自工作以来,结合对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协议的字符串,由服务器发送给浏览器。
  • 相关阅读:
    使用tensorflow深度学习识别验证码
    单线程、多线程、多进程、协程比较,以爬取新浪军事历史为例
    web开发中的安全问题
    关于无效验证码
    怎么制作免费短信轰炸机
    python2.7中关于编码,json格式的中文输出显示
    一个网址
    基于pyteseract google ocr的图形验证码识别
    python使用pyqt写带界面工具
    python使用tkinter写带界面的工具
  • 原文地址:https://www.cnblogs.com/fri-yu/p/5332036.html
Copyright © 2011-2022 走看看