如下是我自工做以來,結合對C/S項目的認知,對B/S項目的一些理解。
若有不足或者錯誤,請各位指正。
B/S browser/server
----對於這兩個軟件的我的見解
本質上,也是兩個軟件而已。
網站(WEB)項目。咱們能夠看作是兩個C/S軟件之間的數據交流。
兩個軟件要進行交流,聽從的是HTTP協議。
----兩個軟件之間的數據交流javascript
1. 當敲下URL並按下回車,瀏覽器會向服務器發起一個請求。
我認爲,其實也就是給服務器發了一個字符串。
2.瀏覽器接收到請求以後,進行內部數據處理,返回最終處理結果給瀏覽器。html
----服務器內部處理動做java
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協議的字符串,由服務器發送給瀏覽器。