①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的一種較好的解決方案,它更多的是一種標準,而不是一種具體的技術。
● 請你說明一下,如何設置請求的編碼以及響應內容的類型?
考察點:請求類型 參考回答: 通過請求對象(ServletRequest)的setCharacterEncoding(String)方法可以設置請求的編碼,其實要徹底解決亂碼問題就應該讓頁面、伺服器、請求和響應、Java程序都使用統一的編碼,最好的選擇當然是UTF-8;通過響應對象(ServletResponse)的setContentType(String)方法可以設置響應內容的類型,當然也可以通過HttpServletResponsed對象的setHeader(String, String)方法來設置。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/221572.html