JAVAWEB基礎理論

java WEB:服務器端編程

OSI參考模型(7層) — TCP/IP協議(4層,應用程序層http協議FTP協議,傳輸協議tcp/udp,網絡協議ip,數據鏈路層)

一、TCP/IP協議: 應用層:應用程序位於應用層,應用程序和TCP/UDP打交道;【FTP、HTTP】 傳輸層:TCP/UDP協議 /* ACK=0為單方面發起,ACK=1雙方建立連接,SYN=1代表已經發起瞭鏈接 */ 網絡層:IP層, 數據鏈路層+物理層:以太網,ATM,硬件的接口; ——————-物理傳輸介質:WIFI、網線;——————

二、TCP三次握手機制: 第一次請求,客戶端主動發送鏈接|建立socket,發送ACK=0,SYN=1,SEQ:隨機碼|; 第二次響應:服務器端被動響應,建立sever Socket,回復(ACK=1,SYN=1,客戶端隨機碼+1+服務器產生隨機碼) 第三次發送消息:將服務器端隨機碼+1; 【圖示】 客戶端(client) 服務器端(server被動打開) 1步創建socket()—————————–>ACK=0,SYN=1,seq=X; 2步:server回應《————————— SYN=1,ACK=1,ack=x+1,seq=y 3步:服務器監聽端口—————————–》ACK=1,seq=x+1,ack=y+1; 服務器知道當前客戶連接有效 ACK:表示響應; SYN:表示建立連接 ack:確認碼 seq:順序碼 具體每部建立過程: 第一步:創建socket() connect()連接指定的計算機端口(ip、端口) send() 往socket()寫入信息; 關閉socket(); 第二步:server server scoket(); bind(),綁定socket和端口號 listen()監聽端口 accept()接受客戶端傳遞過來內容 讀取字符 關閉

三、B/S架構下如何實現網絡通信: B/S與C/S架構的區別:B/S沒有socket,沒有底層,隻有瀏覽器;依照http協議提供的服務支持,將需要網址的地址傳給http協議,在host裡面找,host找不到找DNS找到IP地址,通過IP找到唯一的服務器,再找到服務器的端口,找到請求的地址,並通過http將找到的地址內容在消息體中傳輸回去;將拿回來消息體放在瀏覽器的客戶端就被解析出來瞭; HTTP:超文本傳輸協議(文本以外的音頻,視頻,圖片); 1、是計算機網路通信中的一種規則,屬於應用層的協議; 端口號:80; 【補充】:FTP:文件傳輸協議,端口號:21. 2、是無狀態的協議,客戶機和服務器之間不需要建立持久的連接,通信完就斷開; 3、遵循請求響應模型,所有的通信都構造在請求響應模型中,客戶端和服務器交換數據; HTTP版本號:1.1 默認連接是一直保持的(keep-alive),訪問一個url,發送多次請求,隻依靠一個TCP連接就可以瞭; HTTP的工作流程: 1、客戶端的服務器建立連接:new Socket() 2、客戶端發送請求 攔截器(HTTP Analyzer):得到申請信息;所有的設備狀態,登錄狀態; 包含:請求行,請求的方法(HTTP版本) 請求頭,包含HTTP頭傳遞的元信息。告訴服務器客戶端的一些信息; 空行,發送回車符或者空格,區分請求頭和消息體 消息體,存放用戶傳輸的內容(用戶名和密碼),隻針對POST請求; 【細節】:GET請求放在請求行; 3、服務器響應內容 包含:狀態行:http版本和狀態; 響應頭:內容描述,長度,時間戳,服務器的信息 空 行:回車符或者空格; 消息體:響應的內容; 4、服務器關閉連接,客戶端解析服務器發送回來的內容;

早期網頁使用的服務器端,在服務器存儲所有的靜態頁面,要用什麼調什麼;更改維護麻煩;

CGI程序:–實現動態網頁 早期的的動態網頁:將網頁架構放在服務器,將內容放在數據庫,動態將數據庫的內容進行更新; 在申請網頁中將url改為申請動態網頁,將網頁發給一個小程序CGI程序,小程序將網站需要的動態數據從數據庫提取出來,然後把這些數據傳給登錄html,實現網頁的動態更改; 優點:各種語言都可以使用; 缺點:對服務器的內存消耗很大,每次訪問都會創造一個進程(多進程程序);限制瞭一個服務器可以支持的並發CGI用戶數量; 【解決方案】:1、啟動服務器進程一次,處理所有的應用請求(WEB容器-Servlet)解決用戶訪問的並發量問題; 2、分佈式服務器,成都2-3個服務器,廣州用一些服務器,所有服務器相互聯網;3個備用服務器,上百個服務器同時工作,需要維護的時候,關掉單個服務器;

Servlet:–實現高效率高並發的動態網頁,創建健壯的環境;

javax.servlet.http.*;包 特點: 1、servlet是常規的java代碼,代碼中用瞭一些新的API,不涉及新的語法 2、servlet代碼中有我們不熟悉的重要語句;servlet不屬於J2SE,有單獨的規范; 3、servlet對標準類(Httpservlet)進行瞭擴展 4、servlet沒有main 方法;是一個多線程程序; —web容器負責運行管理servlet;並提供以下支持和功能: 通信支持、生命周期支持、多線程支持、JSP(實現動態網頁技術)支持、處理安全性; servlet主要任務:【處理動態網頁內容】 讀取客戶端發送的顯示和隱式數據 生成結果功能 完成網頁生成 向客戶端發送顯示數據(文檔),隱式數據(HTTP響應數據); servlet總結: 1、運行web服務器或者應用服務器上面的一個java程序,主要用於生成動態內容 2、servlet是與平臺無關的java程序 WEB容器總結: 1、servlet受控於另外一個java應用程序,稱為web容器; 2、WEB容器給servlet、JSP提供運行環境,使得他們直接跟容器中的環境變量交互,就把註意力放在Servlet實現業務邏輯,不必關註其他系統問題; 3、web容器主要是web服務器實現的;【針對http為web服務器,針對Servlet為web容器】 4、web容器/web服務器分類:tomcat-WEB容器/IIS微軟的、apache、jboss-Ejb容器、weblogic-分佈式功能、; tomcat: 1、源於apahce基金會裡面的一個項目,他是一個優秀的web容器;又是一個http服務器 2、開源並且穩定,高效,免費;

開發環境工具:Myeclipse 2014 + tomcat7+JDK1.7

tomcat目錄介紹: bin目錄:開啟tomcat(startup)關閉tomcat()的腳本文件; conf目錄:tomcat的各種配置文件;xml文件做的配置; lib:服務器支持的架包; logs:日志,方便報錯排查; temp:存放臨時文件(臨時產生的數據); webapps:存放web的應用程序,外界都能訪問的web應用程序; work:存放工作文件。主要是jsp生成的代碼;

Myeclipse目錄: SRC:存放代碼; WebRoot文件夾內容是要放在服務器上的 html CSS image文件夾 WEB-INF,這個下面是不能被訪問客戶訪問的; classes,放代碼的編譯文件; lib包存放我們創建的工程; web.xml是整個工程的配置文件; 將工程上傳服務器

方法一:工程打包 export為WAR.file文件,將打包文件復制到tomcat、webapps中,啟動加載startup.bat 【程序自動解壓出來,解壓的項目結構和webroot子目錄一樣;】 訪問文件:https://localhost:8080/JAVAWeb02/html/test01 服務器是否能正常解析; 方法二:導入tomcat; window–Preferences–Tomcat7.x/8.x tomcat輸入配置環境的路徑; –JDK–add目錄;輸入JDK環境路徑 Manage Deployments 中添加Tomcat7.x ADD; 將工程放在服務器中解析,ADD(添加)、redeploy(重載) 然後在瀏覽器輸入網址,查看效果;【細節:端口號變更、樣式的鏈接///在html包外直接包名樣式的程序名;html類../回到父文件夾///】 編碼集。

發佈留言