web編程是什么意思 web編程是干什么的



文章插圖
web編程是什么意思 web編程是干什么的

文章插圖
①get請求用來從服務器上獲得資源 , 而post是用來向服務器提交數據 。
②get將表單中數據按照name=value的形式 , 添加到action 所指向的URL 后面 , 并且兩者使用”?”連接 , 而各個變量之間使用”&”連接;post是將表單中的數據放在HTTP協議的請求頭或消息體中 , 傳遞到action所指向URL 。
③get傳輸的數據要受到URL長度限制(1024字節);而post可以傳輸大量的數據 , 上傳文件通常要使用post方式 。
④使用get時參數會顯示在地址欄上 , 如果這些數據不是敏感數據 , 那么可以使用get;對于敏感數據還是應用使用post 。
⑤get使用MIME類型application/x-www-form-urlencoded的URL編碼(也叫百分號編碼)文本的格式傳遞參數 , 保證被傳送的參數由遵循規范的文本組成 , 例如一個空格的編碼是”%20″ 。
● 請談談 , 轉發和重定向 之間的區別?
考察點:重定向 參考回答: forward是容器中控制權的轉向 , 是服務器請求資源 , 服務器直接訪問目標地址的URL , 把那個URL 的響應內容讀取過來 , 然后把這些內容再發給瀏覽器 , 瀏覽器根本不知道服務器發送的內容是從哪兒來的 , 所以它的地址欄中還是原來的地址 。
redirect就是服務器端根據邏輯 , 發送一個狀態碼 , 告訴瀏覽器重新去請求那個地址 , 因此從瀏覽器的地址欄中可以看到跳轉后的鏈接地址 , 很明顯redirect無法訪問到服務器保護起來資源 , 但是可以從一個網站redirect到其他網站 。forward更加高效 , 所以在滿足需要時盡量使用forward(通過調用RequestDispatcher對象的forward()方法 , 該對象可以通過ServletRequest對象的getRequestDispatcher()方法獲得) 。
并且這樣也有助于隱藏實際的鏈接;在有些情況下 , 比如需要訪問一個其它服務器上的資源 , 則必須使用重定向(通過HttpServletResponse對象調用其sendRedirect()方法實現) 。
● 請談一談 , get和post的區別?
考察點:HTTP請求 參考回答: (1)在客戶端 ,  Get 方式在通過 URL 提交數據 , 數據 在URL中可以看到;POST方式 , 數據放置在HTML HEADER內提交 。
(2)GET方式提交的數據最多只能有1024字節 , 而POST則沒有此限制 。
(3)安全性問題 。正如在( 1 )中提到 , 使用 Get 的時候 , 參數會顯示在地址欄上 , 而 Post 不會 。所以 , 如果這些數據是中文數據而且是非敏感數據 , 那么使用 get ;如果用戶輸入的數據不是中文字符而且包含敏感數據 , 那么還是使用 post 為好 。
安全的和冪等的 。所謂安全的意味著該操作用于獲取信息而非修改信息 。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果 。完整的定義并不像看起來那樣嚴格 。換句話說 ,  GET 請求一般不應產生副作用 。從根本上講 , 其目標是當用戶打開一個鏈接時 , 她可以確信從自身的角度來看沒有改變資源 。
比如 , 新聞站點的頭版不斷更新 。雖然第二次請求會返回不同的一批新聞 , 該操作仍然被認為是安全的和冪等的 , 因為它總是返回當前的新聞 。反之亦然 。POST 請求就不那么輕松了 。POST 表示可能改變服務器上的資源的請求 。仍然以新聞站點為例 , 讀者對文章的注解應該通過 POST 請求實現 , 因為在注解提交之后站點已經不同了(比方說文章下面出現一條注解) 。
● 請對以下在J2EE中常用的名詞進行解釋(或簡單描述)
考察點:J2EE 參考回答: web 容器:給處于其中的應用程序組件(JSP , SERVLET)提供一個環境 , 使JSP,SERVLET直接和容器中的環境變量接接口互 , 不必關注其它系統問題 。主要有WEB服務器來實現 。
例如:TOMCAT,WEBLOGIC,WEBSPHERE等 。該容器提供的接口嚴格遵守J2EE規范中的WEBAPPLICATION 標準 。
我們把遵守以上標準的WEB服務器就叫做J2EE中的WEB容器 。Web container:實現J2EE體系結構中Web組件協議的容器 。這個協議規定了一個Web組件運行時的環境 , 包括安全 , 一致性 , 生命周期管理 , 事務 , 配置和其它的服務 。
一個提供和JSP和J2EE平臺APIs界面相同服務的容器 。一個Web container 由Web服務器或者J2EE服務器提供 。
EJB容器:Enterprise java bean 容器 。更具有行業領域特色 。他提供給運行在其中的組件EJB各種管理功能 。只要滿足J2EE規范的EJB放入該容器 , 馬上就會被容器進行高效率的管理 。并且可以通過現成的接口來獲得系統級別的服務 。例如郵件服務、事務管理 。
一個實現了J2EE體系結構中EJB組件規范的容器 。這個規范指定了一個Enterprise bean的運行時環境 , 包括安全 , 一致性 , 生命周期 , 事務 , 配置 , 和其他的服務 。
JNDI:(Java Naming & Directory Interface)JAVA命名目錄服務 。主要提供的功能是:提供一個目錄系統 , 讓其它各地的應用程序在其上面留下自己的索引 , 從而滿足快速查找和定位分布式應用程序的功能 。
JMS:(Java Message Service)JAVA消息服務 。主要實現各個應用程序之間的通訊 。包括點對點和廣播 。
JTA:(Java Transaction API)JAVA事務服務 。提供各種分布式事務服務 。應用程序只需調用其提供的接口即可 。JAF:(Java Action FrameWork)JAVA安全認證框架 。提供一些安全控制方面的框架 。讓開發者通過各種部署和自定義實現自己的個性安全控制策略 。
RMI/IIOP: (Remote Method Invocation /internet對象請求中介協議)他們主要用于通過遠程調用服務 。例如 , 遠程有一臺計算機上運行一個程序 , 它提供股票分析服務 , 我們可以在本地計算機上實現對其直接調用 。當然這是要通過一定的規范才能在異構的系統之間進行通信 。
● 請談一談 , 網站在架構上應當考慮哪些問題?
考察點:Java架構 參考回答: – 分層:分層是處理任何復雜系統最常見的手段之一 , 將系統橫向切分成若干個層面 , 每個層面只承擔單一的職責 , 然后通過下層為上層提供的基礎設施和服務以及上層對下層的調用來形成一個完整的復雜的系統 。
計算機網絡的開放系統互聯參考模型(OSI/RM)和Internet的TCP/IP模型都是分層結構 , 大型網站的軟件系統也可以使用分層的理念將其分為持久層(提供數據存儲和訪問服務)、業務層(處理業務邏輯 , 系統中最核心的部分)和表示層(系統交互、視圖展示) 。
需要指出的是:(1)分層是邏輯上的劃分 , 在物理上可以位于同一設備上也可以在不同的設備上部署不同的功能模塊 , 這樣可以使用更多的計算資源來應對用戶的并發訪問;
(2)層與層之間應當有清晰的邊界 , 這樣分層才有意義 , 才更利于軟件的開發和維護 。– 分割:分割是對軟件的縱向切分 。我們可以將大型網站的不同功能和服務分割開 , 形成高內聚低耦合的功能模塊(單元) 。
在設計初期可以做一個粗粒度的分割 , 將網站分割為若干個功能模塊 , 后期還可以進一步對每個模塊進行細粒度的分割 , 這樣一方面有助于軟件的開發和維護 , 另一方面有助于分布式的部署 , 提供網站的并發處理能力和功能的擴展 。
– 分布式:除了上面提到的內容 , 網站的靜態資源(JavaScript、CSS、圖片等)也可以采用獨立分布式部署并采用獨立的域名 , 這樣可以減輕應用服務器的負載壓力 , 也使得瀏覽器對資源的加載更快 。數據的存取也應該是分布式的 , 傳統的商業級關系型數據庫產品基本上都支持分布式部署 , 而新生的NoSQL產品幾乎都是分布式的 。
當然 , 網站后臺的業務處理也要使用分布式技術 , 例如查詢索引的構建、數據分析等 , 這些業務計算規模龐大 , 可以使用Hadoop以及MapReduce分布式計算框架來處理 。
– 集群:集群使得有更多的服務器提供相同的服務 , 可以更好的提供對并發的支持 。– 緩存:所謂緩存就是用空間換取時間的技術 , 將數據盡可能放在距離計算最近的位置 。使用緩存是網站優化的第一定律 。我們通常說的CDN、反向代理、熱點數據都是對緩存技術的使用 。– 異步:異步是實現軟件實體之間解耦合的又一重要手段 。異步架構是典型的生產者消費者模式 , 二者之間沒有直接的調用關系 , 只要保持數據結構不變 , 彼此功能實現可以隨意變化而不互相影響 , 這對網站的擴展非常有利 。
使用異步處理還可以提高系統可用性 , 加快網站的響應速度(用Ajax加載數據就是一種異步技術) , 同時還可以起到削峰作用(應對瞬時高并發) 。”;能推遲處理的都要推遲處理”是網站優化的第二定律 , 而異步是踐行網站優化第二定律的重要手段 。
– 冗余:各種服務器都要提供相應的冗余服務器以便在某臺或某些服務器宕機時還能保證網站可以正常工作 , 同時也提供了災難恢復的可能性 。冗余是網站高可用性的重要保證 。
● 請你解釋一下 , 什么是Web Service?
考察點:web service 參考回答: 從表面上看 , Web Service就是一個應用程序 , 它向外界暴露出一個能夠通過Web進行調用的API 。這就是說 , 你能夠用編程的方法透明的調用這個應用程序 , 不需要了解它的任何細節 , 跟你使用的編程語言也沒有關系 。例如可以創建一個提供天氣預報的Web Service , 那么無論你用哪種編程語言開發的應用都可以通過調用它的API并傳入城市信息來獲得該城市的天氣預報 。之所以稱之為Web Service , 是因為它基于HTTP協議傳輸數據 , 這使得運行在不同機器上的不同應用無須借助附加的、專門的第三方軟件或硬件 , 就可相互交換數據或集成 。SOA(Service-Oriented Architecture , 面向服務的架構) , SOA是一種思想 , 它將應用程序的不同功能單元通過中立的契約聯系起來 , 獨立于硬件平臺、操作系統和編程語言 , 使得各種形式的功能單元能夠更好的集成 。顯然 , Web Service是SOA的一種較好的解決方案 , 它更多的是一種標準 , 而不是一種具體的技術 。
● 請你說明一下 , 如何設置請求的編碼以及響應內容的類型?
【web編程是什么意思 web編程是干什么的】考察點:請求類型 參考回答: 通過請求對象(ServletRequest)的setCharacterEncoding(String)方法可以設置請求的編碼 , 其實要徹底解決亂碼問題就應該讓頁面、服務器、請求和響應、Java程序都使用統一的編碼 , 最好的選擇當然是UTF-8;通過響應對象(ServletResponse)的setContentType(String)方法可以設置響應內容的類型 , 當然也可以通過HttpServletResponsed對象的setHeader(String, String)方法來設置 。