整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          js判斷jquery.js是否已加載的代碼

          js判斷jquery.js是否已加載的代碼

          些使用 jquery.js 插件的的網站,為節約服務器資源喜歡引用一些靜態CDN上的 jquery.js 資源鏈接,但如果靜態CDN資源出現無法鏈接的問題,就會導致網站的崩潰。為解決這一問題,今天我們就說一說,如何在靜態CDN資源上的 jquery.js 鏈接失效時,引用本地的jquery.js鏈接。

          檢測jQuery.js是否已加載的判斷方法

          方法1:

          <script>
          if (jQuery) { 
          // jQuery 已加載 
          } else { 
          // jQuery 未加載 
          }
          </script>
          

          方法2:

          <script>
          if (typeof jQuery=='undefined') { 
          // jQuery 未加載 
          } else { 
          // jQuery 已加載 
          }
          </script>
          

          jQuery.js未加載調用本地文件的方法

          示例代碼1:

          <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js"></script>
          <script type="text/javascript">
           if (typeof jQuery=='undefined') {
           document.write('<script src="js/jquery.min.js"></script>');
           }
          </script>
          

          示例代碼2:

          者 | Ronny Shani

          譯者 | 核子可樂

          策劃 | Tina

          2 月 6 日,jQuery 核心團隊負責人 Timmy Willison 宣布,jQuery 4.0.0 現已發布 beta 版。

          jQuery 4.0.0 已經開發了很長時間,如今終于準備好推出 beta 版本!新版本有不少內容值得介紹,我們也很高興迎接它的到來。除了 bug 修復和性能改進之外,4.0.0 還做出了一系列重大調整。

          我們裁剪掉遺留代碼,刪除了部分已被棄用的 API,還去掉了不少從未對外公開、僅供內部使用的公共函數參數,同時不再支持某些過于復雜的“神奇”操作。


          本文將向大家簡單介紹這些變更。先從最重要的入手:放棄對 IE10 及更早版本的支持。jQuery 團隊原本計劃在微軟于 2022 年結束支持后放棄 IE11,但最終又決定將計劃延后至 v5,以避免 v4 版本出現更多問題。


          即將發布的新版本將使用 ES 模塊,并將打包方案從 RequireJS 切換至 Rollup。新版本還刪除了 13 項已被棄用的函數,這些函數“要么長期僅對內部開放,要么已經在所有受支持瀏覽器上均已有等效替代選項”。


          jQuery:全球 7800 萬網站的共同選擇


          此次公告的一大重要主題,就是全面遵循各種現代瀏覽器行為與規范。事實上,自 2006 年 1 月 jQuery 誕生以來(當時 IE 還占全球九成市場份額 ),網絡瀏覽器已經取得了長足的進步,前端開發也掀起一波曠日持久的競爭。


          現如今,99.84%的瀏覽器均已支持 ES6、提供大量效果良好的 Web API 還迎來了 CSS 的強大升級(允許我們使用 WebAssembly 在瀏覽器中運行成熟 WordPress 實例)——至少不再需要依賴 1.25 MB 的 DOM 操作庫了。


          或者用一位 Reddit 用戶的話說:

          看看,jQuery 簡直是不可思議。它以難以置信的方式改變了 JS,給 JS 開發者帶來了前所未有的改變。它如此創意滿滿,JS 社區和 TC39 實現了很多 jQ 以往根本做不到的事。jQ 的最大目標就是制定標準和改進 JS 語言,它做到了,而現在也是時候退出歷史舞臺了。


          從在線統計數據來看,這種說法顯然很有道理。jQuery 可能已經成了前端領域最不招人疼的孩子,但可觀的市場份額卻足以讓其他時髦框架相形見絀。


          從 NPM 看,jQuery 3.7.1 發布于 2023 年 8 月,每周下載量超過 900 萬次,相應依賴包更是超過 20k。


          BuiltWith 指出目前全球超 7800 萬網站在使用 jQuery,而 W3Techs 報告稱“據我們所知,全部 JavaScript 庫網站中有 94.4%使用 jQuery,在所有網站中占比 77.1%。”


          源遠流長

          jQuery 之所以能夠長期流行,主要原因之一就是它對生態系統的卓越貢獻。具體來講,它被捆綁在 WordPress Core 當中,成為了眾多主題與插件的固定組成部分。


          WordPress 采用基于 React 的 Gutenberg,降低了對 jQuery 的依賴。在 Willison 做出題為《JavaScript 之于現代 WordPress 開發》(https://wordpress.tv/2024/02/13/developer-hours-javascript-for-modern-wordpress-development/)演講一周后的 Developers Hours 開發者會議上,Automattic 開發倡導者 Ryan Welcher 和 Nick Diego 花了一個多小時深入討論 JS 工具和技術如何構建塊和編輯器擴展,但卻一次都沒有提到過 jQuery。


          在 2021 年 10 月在 Make Themes 博客上發表的文章中,核心貢獻者 Felix Arntz 甚至敦促開發者們放棄 jQuery 以提高性能。


          盡管如此,在 Willison 宣布 jQuery 新版本的當天,TRAC 還是率先報道了這一消息,并提問“WordPress 核心團隊期待這次更新嗎?”Automattic 首席開發者 Andrew Ozz 立馬回復,“當然:)”


          作為在 CMS 市場上占比高達 43%的巨頭,WordPress 的肯定無疑是給 jQuery 續命的萬能靈藥。



          WordPress Tavern 上次介紹 jQuery 還是在 2020 年,當時 jQuery Migarte 1.4.1 被從 WordPress 5.5 中刪除,并引發不少主題和插件失效。


          WordPress 核心團隊的 Enable jQuery Migrate Helper 插件專為解決這次問題而推出,時至今日仍在繼續維護,并擁有 10 萬活躍安裝量。用戶們普遍反響不錯,表示這東西確實有效。可這也不禁讓我們要問,現在已經是 2024 年了,為什么構建 WordPress 網站還需要借助這樣一個“作為臨時解決方案的插件,為的就是讓插件和主題作者們能繼續拖著不更新和測試自己的代碼?”


          推動 Web 向前發展的開拓者


          也許答案就在 W3Techs 上一條令人震驚的評論當中。目前,使用 jQuery 的網站中仍有三分之一運行著 3.x 甚至更早(3.0.0 發布于 2016 年 6 月)版本。


          這樣的結果與 OpenJS 基金會及 IDC 于 2023 年 11 月開展的一項小范圍研究也對得上。在 509 名調查受訪者中,有 89%確認自己在使用 jQuery,其中 56%表示部署的是舊版本,其中有些版本甚至不再維護。


          開源與標準化專家 Tobie Langel 在 W3C 的 Secure the Web Forward 研討會上發表講話,認為“jQuery 巨大的影響力和長久的生命力”使其處于獨特的市場地位:如果捍衛 jQuery 就是捍衛 Web,那么 jQuery 也許會再一次迸發出新的生機,以開拓者的姿態繼續推動 Web 向前發展。

          人們已經在為此而努力:2022 年 10 月,開源安全基金會(OpenSSF)的 Alpha-Omega 項目向 jQuery 授予了 35 萬美元的資助,旨在“幫助其用戶并推動代碼現代化,從而緩解 jQuery 的潛在安全問題。”


          而且在 Linux 基金會、微軟、谷歌、亞馬遜等行業巨頭的支持下,以及由 GoDaddy、IBM、Joyent 和 Sovereign Tech Fund 支持的 OpenJS 基金會的推動下,jQuery 似乎已經呈現出復蘇的跡象。

          原文鏈接:https://www.infoq.cn/article/ZZRcTXfErLIftQNwwSZg

          eb方面相關:

          291.WEB應用中如果有.class和.jar類型的文件一般分別應該放在什么位置?

          答:.class文件放在WEB-INF/classes文件下,.jar文件放在WEB-INF/lib文件夾下

          292.元素中有一個輸入框(< input type='text' name=”username”id=”username”value=””/>,請用JavaScript語言寫一行代碼,取得這個輸入框中的值。

          答:document.getElementById(“username”).value;

          293.簡單描述一下Servlet與JSP的的相同點和區別點。

          區別:

          JSP是在HTML代碼里寫JAVA代碼,框架是HTML;而Servlet是在JAVA代碼中寫HTML代碼,本身是個JAVA類。

          JSP使人們把顯示和邏輯分隔成為可能,這意味著兩者的開發可并行進行;而Servlet并沒有把兩者分開。

          Servlet獨立地處理靜態表示邏輯與動態業務邏輯.這樣,任何文件的變動都需要對此服務程序重新編譯;JSP允許用特殊標簽直接嵌入到HTML頁面, HTML內容與JAVA內容也可放在單獨文件中,HTML內容的任何變動會自動編譯裝入到服務程序.

          Servlet需要在web.xml中配置,而JSP無需配置。

          目前JSP主要用在視圖層,負責顯示,而Servlet主要用在控制層,負責調度

          聯系:

          都是Sun公司推出的動態網頁技術。

          先有Servlet,針對Servlet缺點推出JSP。JSP是Servlet的一種特殊形式,每個JSP頁面就是一個Servlet實例——JSP頁面由系統翻譯成Servlet,Servlet再負責響應用戶請求。

          294.請簡單描述下幾個您熟悉JavaScript庫,它們有哪些作用和特點?

          JavaScript 高級程序設計(特別是對瀏覽器差異的復雜處理),通常很困難也很耗時。為了應對這些調整,許多的 JavaScript庫應運而生。這些 JavaScript 庫常被稱為 JavaScript 框架。

          jQuery:

          Ext JS - 可定制的 widget,用于構建富因特網應用程序(rich Internet applications)。

          Prototype

          MooTools。

          YUI - Yahoo! User Interface Framework,涵蓋大量函數的大型庫,從簡單的 JavaScript 功能到完整的 internet widget。

          295.簡單描述HTML,CSS,Javascript在Web開發中分別起什么作用?

          1、什么是HTML(超文本標記語言 Hyper Text Markup Language),HTML 是用來描述網頁的一種語言。

          2、CSS(層疊樣式表 Cascading Style Sheets),樣式定義如何顯示 HTML 元素,語法為:selector {property:value} (選擇符 {屬性:值})

          3、JavaScript是一種腳本語言,其源代碼在發往客戶端運行之前不需經過編譯,而是將文本格式的字符代碼發送給瀏覽器由瀏覽器解釋運行

          對于一個網頁,HTML定義網頁的結構,CSS描述網頁的樣子,JavaScript設置一個很經典的例子是說HTML就像 一個人的骨骼、器官,而CSS就是人的皮膚,有了這兩樣也就構成了一個植物人了,加上javascript這個植物人就可以對外界刺激做出反應,可以思 考、運動、可以給自己整容化妝(改變CSS)等等,成為一個活生生的人。

          如果說HTML是肉身、CSS就是皮相、Javascript就是靈魂。沒有Javascript,HTML+CSS是植物人,沒有Javascript、CSS是個毀容的植物人。

          如果說HTML是建筑師,CSS就是干裝修的,Javascript是魔術師。

          296.當DOM加載完成后要執行的函數,下面哪個是正確的()

          A.

          JQuery(expression, [context])

          B.

          JQuery(html, [ownerDocument])

          C.

          JQuery(callback)

          答案:C

          297.舉例說明JAVA中如何解析xml,不同方式有和優缺點?

          答:1. DOM(Document Object Model)

          DOM是用與平臺和語言無關的方式表示XML文檔的官方W3C標準。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找特定信息。分析該結構通常需要加載整個文檔和構造層次結構,然后才能做任何工作。由于它是基于信息層次的,因而DOM被認為是基于樹或基于對象的。

          【優點】

          ①允許應用程序對數據和結構做出更改。

          ②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。

          【缺點】

          ①通常需要加載整個XML文檔來構造層次結構,消耗資源大。

          2. SAX(Simple API for XML)

          SAX處理的優點非常類似于流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由于應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對于大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。

          選擇DOM還是選擇SAX? 對于需要自己編寫代碼來處理XML文檔的開發人員來說, 選擇DOM還是SAX解析模型是一個非常重要的設計決策。 DOM采用建立樹形結構的方式訪問XML文檔,而SAX采用的是事件模型。

          DOM解析器把XML文檔轉化為一個包含其內容的樹,并可以對樹進行遍歷。用DOM解析模型的優點是編程容易,開發人員只需要調用建樹的指令,然后利用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由于使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由于它的遍歷能力,DOM解析器常用于XML文檔需要頻繁的改變的服務中。

          SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag.特別是當開發人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。

          【優勢】

          ①不需要等待所有數據都被處理,分析就能立即開始。

          ②只在讀取數據時檢查數據,不需要保存在內存中。

          ③可以在某個條件得到滿足時停止解析,不必解析整個文檔。

          ④效率和性能較高,能解析大于系統內存的文檔。

          【缺點】

          ①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關系等),文檔越復雜程序就越復雜。

          ②單向導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。

          3. JDOM(Java-based Document Object Model)

          JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現更快。由于是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過“Java規范請求JSR-102”將它最終用作“Java標準擴展”。從2000年初就已經開始了JDOM開發。

          JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。

          JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據學習曲線假定為20%)。JDOM對于大多數Java/XML應用程序來說當然是有用的,并且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接口都更有意義的工作。

          JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼。

          【優點】

          ①使用具體類而不是接口,簡化了DOM的API。

          ②大量使用了Java集合類,方便了Java開發人員。

          【缺點】

          ①沒有較好的靈活性。

          ②性能較差。

          4. DOM4J(Document Object Model for Java)

          雖然DOM4J代表了完全獨立的開發結果,但最初,它是JDOM的一種智能分支。它合并了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J API和標準DOM接口具有并行訪問功能。從2000下半年開始,它就一直處于開發之中。

          為支持所有這些功能,DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。

          在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發者的易用性和直觀操作。它還致力于成為比JDOM更完整的解決方案,實現在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。

          DOM4J是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J.

          【優點】

          ①大量使用了Java集合類,方便Java開發人員,同時提供一些提高性能的替代方法。

          ②支持XPath。

          ③有很好的性能。

          【缺點】

          ①大量使用了接口,API較為復雜。

          二、比較

          1. DOM4J性能最好,連Sun的JAXM也在用DOM4J。目前許多開源項目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就采用DOM4J.

          2. JDOM和DOM在性能測試時表現不佳,在測試10M文檔時內存溢出,但可移植。在小文檔情況下還值得考慮使用DOM和JDOM.雖然JDOM的開發者已經說明他們期望在正式發行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現廣泛應用于多種編程語言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基于非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在JavaScript中使用DOM)。

          3. SAX表現較好,這要依賴于它特定的解析方式-事件驅動。一個SAX檢測即將到來的XML流,但并沒有載入到內存(當然當XML流被讀入時,會有部分文檔暫時隱藏在內存中)。

          我的看法:如果XML文檔較大且不考慮移植性問題建議采用DOM4J;如果XML文檔較小則建議采用JDOM;如果需要及時處理而不需要保存數據則考慮SAX。但無論如何,還是那句話:適合自己的才是最好的,如果時間允許,建議大家講這四種方法都嘗試一遍然后選擇一種適合自己的即可。

          298.char型變量中能不能存儲一個中文漢字?

          答:1.java采用unicode編碼,2個字節(16位)來表示一個字符, 無論是漢字還是數字,字母,或其他語言都可以存儲。

          2.char 在java中是2個字節,所以可以存儲中文

          299.一個類可以實現多個接口,但只能繼承一個抽象類。

          下面接著再說說兩者在應用上的區別:

          接口更多的是在系統架構設計方法發揮作用,主要用于定義模塊之間的通信契約。而抽象類在代碼實現方面發揮作用,可以實現代碼的重用,例如,模板方法設計模式是抽象類的一個典型應用,假設某個項目的所有Servlet類都要用相同的方式進行權限判斷、記錄訪問日志和處理異常,那么就可以定義一個抽象的基類,讓所有的Servlet都繼承這個抽象基類,在抽象基類的service方法中完成權限判斷、記錄訪問日志和處理異常的代碼,在各個子類中只是完成各自的業務邏輯代碼,偽代碼如下:

          public abstract classBaseServlet extends HttpServlet{
                  public final void service(HttpServletRequest request,HttpServletResponse response) throws IOExcetion,ServletException       {
                         記錄訪問日志
                         進行權限判斷
          if(具有權限){
                 try{
                        doService(request,response);
          }
                 catch(Excetpion e)  {
                               記錄異常信息
                 }
          }
                  }
                  protected abstract void doService(HttpServletRequest request,HttpServletResponse response) throws IOExcetion,ServletException;
          //注意訪問權限定義成protected,顯得既專業,又嚴謹,因為它是專門給子類用的
          }
           
          public class MyServlet1 extendsBaseServlet
          {
          protected voiddoService(HttpServletRequest request, HttpServletResponse response) throwsIOExcetion,ServletException
                  {
                         本Servlet只處理的具體業務邏輯代碼
                  }
           
          }

          父類方法中間的某段代碼不確定,留給子類干,就用模板方法設計模式。

          備注:這道題的思路是先從總體解釋抽象類和接口的基本概念,然后再比較兩者的語法細節,最后再說兩者的應用區別。比較兩者語法細節區別的條理是:先從一個類中的構造方法、普通成員變量和方法(包括抽象方法),靜態變量和方法,繼承性等6個方面逐一去比較回答,接著從第三者繼承的角度的回答,特別是最后用了一個典型的例子來展現自己深厚的技術功底。

          300.比較一下Java 和JavaSciprt

          答:JavaScript 與Java是兩個公司開發的不同的兩個產品。Java 是原Sun 公司推出的面向對象的程序設計語言,特別適合于互聯網應用程序開發;而JavaScript是Netscape公司的產品,為了擴展Netscape瀏覽器的功能而開發的一種可以嵌入Web頁面中運行的基于對象和事件驅動的解釋性語言,它的前身是LiveScript;而Java 的前身是Oak語言。

          下面對兩種語言間的異同作如下比較:

          1)基于對象和面向對象:Java是一種真正的面向對象的語言,即使是開發簡單的程序,必須設計對象;JavaScript是種腳本語言,它可以用來制作與網絡無關的,與用戶交互作用的復雜軟件。它是一種基于對象(Object-Based)和事件驅動(Event-Driven)的編程語言。因而它本身提供了非常豐富的內部對象供設計人員使用;

          2)解釋和編譯:Java 的源代碼在執行之前,必須經過編譯;JavaScript 是一種解釋性編程語言,其源代碼不需經過編譯,由瀏覽器解釋執行;

          3)強類型變量和類型弱變量:Java采用強類型變量檢查,即所有變量在編譯之前必須作聲明;JavaScript中變量聲明,采用其弱類型。即變量在使用前不需作聲明,而是解釋器在運行時檢查其數據類型;

          4)代碼格式不一樣。

          補充:上面列出的四點是原來所謂的標準答案中給出的。其實Java和JavaScript最重要的區別是一個是靜態語言,一個是動態語言。目前的編程語言的發展趨勢是函數式語言和動態語言。在Java中類(class)是一等公民,而JavaScript中函數(function)是一等公民。對于這種問題,在面試時還是用自己的語言回答會更加靠譜。

          301.什么時候用assert?

          答:assertion(斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。一般來說,assertion用于保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟件發布后, assertion檢查通常是關閉的。在實現中,斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為true;如果表達式計算為false,那么系統會報告一個AssertionError。

          斷言用于調試目的:

          assert(a > 0); // throws an AssertionError if a <=0

          斷言可以有兩種形式:

          assert Expression1;

          assert Expression1 : Expression2 ;

          Expression1 應該總是產生一個布爾值。

          Expression2 可以是得出一個值的任意表達式;這個值用于生成顯示更多調試信息的字符串消息。

          斷言在默認情況下是禁用的,要在編譯時啟用斷言,需使用source 1.4 標記:

          javac -source 1.4 Test.java

          要在運行時啟用斷言,可使用-enableassertions 或者-ea 標記。

          要在運行時選擇禁用斷言,可使用-da 或者-disableassertions 標記。

          要在系統類中啟用斷言,可使用-esa 或者-dsa 標記。還可以在包的基礎上啟用或者禁用斷言。可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數。不過,斷言不應該用于驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應該以任何方式改變程序的狀態。

          302.UML是什么?UML中有哪些圖?

          答:UML是統一建模語言(Unified Modeling Language)的縮寫,它發表于1997年,綜合了當時已經存在的面向對象的建模語言、方法和過程,是一個支持模型化和軟件系統開發的圖形化語言,為軟件開發的所有階段提供模型化和可視化支持。使用UML可以幫助溝通與交流,輔助應用設計和文檔的生成,還能夠闡釋系統的結構和行為。UML定義了多種圖形化的符號來描述軟件系統部分或全部的靜態結構和動態結構,包括:用例圖(use case diagram)、類圖(class diagram)、時序圖(sequence diagram)、協作圖(collaboration diagram)、狀態圖(statechart diagram)、活動圖(activity diagram)、構件圖(component diagram)、部署圖(deployment diagram)等。在這些圖形化符號中,有三種圖最為重要,分別是:用例圖(用來捕獲需求,描述系統的功能,通過該圖可以迅速的了解系統的功能模塊及其關系)、類圖(描述類以及類與類之間的關系,通過該圖可以快速了解系統)、時序圖(描述執行特定任務時對象之間的交互關系以及執行順序,通過該圖可以了解對象能接收的消息也就是說對象能夠向外界提供的服務)。

          用例圖:

          303.XML 文檔定義有幾種形式?它們之間有何本質區別?解析XML 文檔有哪幾種方式?

          答: XML文檔定義分為DTD和Schema兩種形式;其本質區別在于Schema本身也是一個XML文件,可以被XML解析器解析。對XML的解析主要有DOM(文檔對象模型)、SAX、StAX(JDK 1.6中引入的新的解析XML的方式,Streaming API for XML) 等,其中DOM處理大型文件時其性能下降的非常厲害,這個問題是由DOM 的樹結構所造成的,這種結構占用的內存較多,而且DOM 必須在解析文件之前把整個文檔裝入內存,適合對XML 的隨機訪問(典型的用空間換取時間的策略);SAX是事件驅動型的XML解析方式,它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML 的順序訪問;如其名稱所暗示的那樣,StAX把重點放在流上。實際上,StAX與其他方法的區別就在于應用程序能夠把XML作為一個事件流來處理。將XML作為一組事件來處理的想法并不新穎(事實上 SAX 已經提出來了),但不同之處在于StAX允許應用程序代碼把這些事件逐個拉出來,而不用提供在解析器方便時從解析器中接收事件的處理程序。

          304.你在項目中哪些地方用到了XML?

          答: XML的主要作用有兩個方面:數據交換(曾經被稱為業界數據交換的事實標準,現在此項功能在很多時候都被JSON取代)和信息配置。在做數據交換時,XML將數據用標簽組裝成起來,然后壓縮打包加密后通過網絡傳送給接收者,接收解密與解壓縮后再從XML文件中還原相關信息進行處理。目前很多軟件都使用XML來存儲配置信息,很多項目中我們通常也會將作為配置的硬代碼(hard code)寫在XML文件中,Java的很多框架也是這么做的。

          305.用JavaScript實現用正則表達式驗證,某個字符串是合法的6位數字的郵編的函數

          Function testE(ss){
            var reg=/^[1-9][0-9]{5}$/;
            if(req.test(ss)){
              alert(“郵編OK”)
          }else{
            alert(“郵編格式不正確”);
          }
          }

          306.請使用JQuery將頁面上的所有元素邊框設置為2pix寬的虛線?

          $(“*”).css(“border”,”2px dashed”)

          307.如何設定JQuery異步調用還是同步調用?

          答案:調用jQuery中的ajax函數,設置其async屬性來表明是異步還是同步,如下:

          $.ajax({
          async:true//表示異步,false表示同步
          })

          308.說出3條以上firefox和IE的瀏覽器兼容問題?

          答案:兼容firefox的 outerHTML,FF中沒有outerHtml的方法

          IE下,可以使用()或[]獲取集合類對象;Firefox下,只能使用[]獲取集合類對象.解決方法:統一使用[]獲取集合類對象.

          IE下,可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getAttribute()獲取自定義屬性;Firefox下,只能使用getAttribute()獲取自定義屬性.解決方法:統一通過getAttribute()獲取自定義屬性

          309.請用Jquery語言寫出ajax請求或者post請求代碼

          $.post(“show”,{uname=”張三”,pwd=”123”},function(data){
            alert(data)
          })

          310.body中的onload ()函數和jQuery中document.ready()有什么區別?

          答案:ready 事件的觸發,表示文檔結構已經加載完成(不包含圖片等非文字媒體文件)

          onload 事件的觸發,表示頁面包含圖片等文件在內的所有元素都加載完成。

          311.jQuery中有哪幾種類型的選擇器?

          答案:

          基本選擇器

          層次選擇器

          基本過濾選擇器

          內容過濾選擇器

          可見性過濾選擇器

          屬性過濾選擇器

          子元素過濾選擇器

          表單選擇器

          表單過濾選擇器

          312.EasyUI中datagrid刷新當前數據的方法?

          答案:使用reload()即可

          313.分別寫出一個div居中和其中的內容居中的css屬性設置

          Div居中:

          margin:auto 0px;

          內容居中:

          text-align:center;

          314.概述一下session與cookie的區別

          答案:

          存儲角度:

          Session是服務器端的數據存儲技術,cookie是客戶端的數據存儲技術

          解決問題角度:

          Session解決的是一個用戶不同請求的數據共享問題,cookie解決的是不同請求的請求數據的共享問題

          生命周期角度:

          Session的id是依賴于cookie來進行存儲的,瀏覽器關閉id就會失效

          Cookie可以單獨的設置其在瀏覽器的存儲時間。

          315.JavaScript 中 null和 undefined 是否有區別?有哪些區別?

          答案:

          賦值角度說明:

          null 表示此處沒有值,undefined表示此處定義了但是沒有賦值

          從數據轉換角度:

          Null在做數值轉換時會被轉換為0,undefined會被轉換為NaN

          316.Servlet中的doPost和doGet方法有什么區別?它們在傳遞和獲取參數上有什么區別?

          答案:

          區別:doPost用來處理post請求,doGet用來處理get請求,獲取參數:獲取的參數是相同的都是HttpServletRequest \HttpServletResponse

          317.請寫出一段jQuery代碼,實現把當前頁面中所有的a元索中class 屬性為“view-link”的鏈接都改為在新窗口中打開

          答案:$(“a[class=view-link]”).attr(“target”,”_blank”)

          318.如下JavaScript代碼的輸出為:

          var scope="global scope";
          function checkscope() {
          var scope="local scope”;
           return function() { return scope}
          }
          console.log (checkscope()());

          319.Jquery中’.get()’與’.eq()’的區別

          eq返回的是一個jquery對象 get返回的是一個html對象

          320.如何給weblogic定內存的大小?

          在啟動Weblogic的腳本中(位于所在Domian對應服務器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調整最小內存為32M,最大200M

          321.TCP為何采用三次握手來建立連接,若釆用二次握手可以嗎,請說明理由?

          三次握手是為了防止已失效的連接請求再次傳送到服務器端。 二次握手不可行,因為:如果由于網絡不穩定,雖然客戶端以前發送的連接請求以到達服務方,但服務方的同意連接的應答未能到達客戶端。則客戶方要重新發送連接請求,若采用二次握手,服務方收到重傳的請求連接后,會以為是新的請求,就會發送同意連接報文,并新開進程提供服務,這樣會造成服務方資源的無謂浪費

          322.以下HTTP相應狀態碼的含義描述正確的是()

          A.

          200ok表示請求成功

          B.

          400不良請求表示服務器未發現與請求URL匹配內容

          C.

          404未發現表示由于語法錯誤兒導致服務器無法理解請求信息

          D.

          500內部服務器錯誤,無法處理請求

          答案:D

          分析:

          A 200ok 表示的意思是一切正常。一般用于相應GET和POST請求。這個狀態碼對servlet是缺省的;如果沒有調用setStatus方法的話,就會得到200。

          B 400 表示指出客戶端請求中的語法錯誤

          C 404 客戶端所給的地址無法找到任何資源

          323.JSP頁面包括哪些元素?()

          A.

          JSP命令

          B.

          JSP Action

          C.

          JSP腳本

          D.

          JSP控件

          答案:C

          分析:JSP頁面元素構成如下,因此ABD錯誤

          A 200ok 表示的意思是一切正常。一般用于相應GET和POST請求。這個狀態碼對servlet是缺省的;如果沒有調用setStatus方法的話,就會得到200。

          B 400 表示指出客戶端請求中的語法錯誤

          C 404 客戶端所給的地址無法找到任何資源

          324.Ajax有四種技術組成:DOM,CSS,JavaScript,XmlHttpRequest,其中控制文檔結構的是()

          A.

          DOM

          B.

          CSS

          C.

          JavaScript

          D.

          XmlHttpRequest

          答案:A

          325.下面關于session的用法哪些是錯誤的?()

          A.

          HttpSession session=new HttpSession();

          B.

          String haha=session getParameler(:haha”);

          C.

          session.removeAttribute(“haha”);

          D.

          session.setAttribute(:haha:);XmlHttpRequest

          答案:A

          326.Jsp九大內置對象

          答案:1、request對象

          request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用于接受通過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域為一次請求。

          2、response對象

          response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。

          3、session對象

          session 對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用于保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限于字符串類型。

          4、application對象

          application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命周期更長,類似于系統的“全局變量”。

          5、out 對象

          out 對象用于在Web瀏覽器內輸出信息,并且管理應用服務器上的輸出緩沖區。在使用 out 對象輸出數據時,可以對數據緩沖區進行操作,及時清除緩沖區中的殘余數據,為其他的輸出讓出緩沖空間。待數據輸出完畢后,要及時關閉輸出流。

          6、pageContext 對象

          pageContext 對象的作用是取得任何范圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

          7、config 對象

          config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。

          8、page 對象

          page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似于Java編程中的 this 指針。

          9、exception 對象

          exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,并把 exception 對象傳送到在page指令中設定的錯誤頁面中,然后在錯誤頁面中處理相應的 exception 對象。

          327.如何配置一個servlet?

          在web.xml中使用如下標簽:

          <servlet>
           <servlet-name></servlet-name>
           <servlet-class></servlet-class>
          </servlet>
          <servlet-mapping>
           <servlet-name></servlet-name>
           <url-pattern></url-pattern>
           </servlet-mapping>
           或者使用注解方式:
          @WebServlet(name="servlet", urlPatterns={"/*"})

          328.JavaScript,如何定義含有數值1至8的數組?

          答: var arr=[1,2,3,4,5,6,7,8]

          329.以下JavaScipt語句會產生運行錯誤的是_()

          A.

          var obj=( );

          B.

          var obj=[ ];

          C.

          var obj=//;

          D.

          var obj=1;

          答案:AC

          330.在JSP中,下面__()__塊中可以定義一個新類:

          A.

          <% %>

          B.

          <% ! %>

          C.

          <%@ %>

          D.

          <%=%>

          答案:B

          分析:B <% ! %> 可用作聲明

          A不正確

          C為引用xxx,比如<% @page xxxxx%>

          D為表達式

          331.HTML含義和版本變化

          HTML含義:

          Hyper Text Markup Language 超文本標記語言,是一種用來制作“網頁”的簡單標記語言;用HTML編寫的超文本文檔稱為HTML文檔,HTML文檔的擴展名是html或者htm

          版本變化:

          HTML1.0——在1993年6月作為IETF工作草案發布(并非標準)

          HTML 2.0——1995年11月作為RFC 1866發布

          HTML 3.2——1997年1月14日,W3C推薦標準

          HTML 4.0——1997年12月18日,W3C推薦標準

          HTML 4.01(微小改進)——1999年12月24日,W3C推薦標準

          HTML 5—2014年10月28日,W3C推薦標準HTML文檔結構;

          HTML 5.1 - 2016年

          HTML 5.2 – 2018年最新版本

          HTML 5.3 is coming…

          332.什么是錨鏈接

          錨鏈接是帶有文本的超鏈接。可以跳轉到頁面的某個位置,適用于頁面內容較多,超過一屏的場合 。分為頁面內的錨鏈接和頁面間的錨鏈接 。

          例如:1F2F

          跳轉到2F標記位置

          說明:

          1.在標記位置利用a標簽的name屬性設置標記。

          2.在導航位置通過a標簽的href屬性用#開頭加name屬性值即可跳轉錨點位置。

          333.HTML字符實體的作用及其常用字符實體

          有些字符,比如說“<”字符,在HTML中有特殊的含義,因此不能在文本中使用。想要在HTML中顯示一個小于號“<”,需要用到字符實體:<或者<

          字符實體擁有三個部分:一個and符號(&),一個實體名或者一個實體號,最后是一個分號(;)

          常用字符實體:

          顯示結果

          描述

          實體

          實體號


          空格



          <

          小于

          <

          <

          >

          大于

          >

          &#

          &

          and符號

          &

          &

          '

          單引號

          ' (IE不支持)

          '

          "

          引號

          "

          "

          英鎊

          人民幣元

          §

          章節

          ?

          版權

          ?

          ?

          334.HTML表單的作用和常用表單項類型

          表單的作用:

          利用表單可以收集客戶端提交的有關信息。

          常用表單項類型:

          input標簽
          type屬性

          功能

          input標簽
          type屬性

          功能

          text

          單行本框

          reset

          重置按鈕

          password

          密碼框

          submit

          提交按鈕

          radio

          單選按鈕

          textarea

          文本域

          checkbox

          復選框

          select

          下拉框

          button

          普通按鈕

          hidden

          隱藏域

          335.表格、框架、div三種HTML布局方式的特點


          優點

          缺點

          應用場合

          表格

          方便排列有規律、結構均勻的內容或數據

          產生垃圾代碼、影響頁面下載時間、靈活性不大難于修改

          內容或數據整齊的頁面

          框架

          支持滾動條、方便導航 節省頁面下載時間等

          兼容性不好,保存時不方便、應用范圍有限

          小型商業網站、論壇后臺管理

          Div

          代碼精簡、提高頁面下載速度、表現和內容分離

          比較靈活、難于控制

          復雜的不規則頁面、業務種類較多的大型商業網站

          336.form中input設置為readonly和disabled的區別


          readonly

          disabled

          有效對象

          .只針對type為text/password有效

          對所有表單元素有效

          表單提交

          當表單元素設置readonly后,表單提交能將該表單元素的值傳遞出去。

          當表單元素設置disabled后,表單提交不能將該表單元素的值傳遞出去。

          337.CSS的定義和作用

          CSS的定義:CSS是Cascading Style Sheets(層疊樣式表)的簡稱。

          CSS是一系列格式規則,它們控制網頁內容的外觀。CSS簡單來說就是用來美化網頁用的。

          CSS的具體作用包括:

          使網頁豐富多彩,易于控制。

          頁面的精確控制,實現精美、復雜頁面 。

          338.CSS2常用選擇器類型及其含義

          選擇器名稱

          案例

          語法格式

          標簽選擇器

          h3{font-size:24px;font-family:"隸書“; }< h3>JSP< /h3>

          元素標簽名{樣式屬性}

          類選擇器

          .red {color:#F00;} < li class="red">Oracle< /li>

          . 元素標簽class屬性值{樣式屬性}

          ID選擇器

          #p1 {background-color:#0F0;} < p id="p1">content< /p>

          #元素標簽id屬性值{樣式屬性}

          包含選擇器

          div h3{color:red;} < div> < h3>CSS層疊樣式表< /h3> < /div>

          父元素標簽 子元素標簽{ 樣式屬性 }

          子選擇器

          div>ul{color:blue;} < div> < ul> < li>測試1 < ol> < li>嵌套元素< /li> < li>嵌套元素< /li> < li>嵌套元素< /li> < li>嵌套元素< /li> < /ol> < /li> < li>測試1< /li> < li>測試1< /li> < /ul> < /div>

          父元素標簽名>子元素名{ 樣式屬性 }

          339.引入樣式的三種方式及其優先級別

          三種引用方式:

          1. 外部樣式表(存放.css文件中)

          不需要style標簽

          < link rel=”stylesheet” href=”引用文件地址” />

          2. 嵌入式樣式表

          < style type=“text/css”>

          p{color:red;}

          < /style>

          3.內聯樣式

          標簽屬性名為style

          < p style=“color:red;”>< /p>

          優先級級別:內聯定義最高、內部CSS次之、外部CSS優先級最低。。

          340.盒子模型

          盒子模型類似于生活中的盒子,具有4個屬性,外邊距,內邊距,邊框,內容。

          外邊距:margin,用于設置元素和其他元素之間的距離。

          內邊距:padding,用于設置元素內容和邊框之間的距離。

          邊框:border,用于設置元素邊框粗細,顏色,線型。

          內容:width,height,用于設置元素內容顯示的大小。

          例如:

          <style>
              body{
                margin: 0;  /*取消body默認的外邊距*/
              }
          #img1{
          width:200px;   /*設置圖片的寬度*/
          border: 2px solid black; /*設置圖片邊框*/
          margin: 5px;
          /*設置圖片外邊距(表示該圖片與其他圖片的距離為5px)*/
          padding:10px; /*設置圖片與邊框之間的距離*/
          }
          #img2{
          height: 200px; /* 設置圖片的高度*/
          border: 2px solid black; /*設置圖片的邊框*/
          margin: 5px; /*設置圖片外邊距*/
          padding: 20px; /*設置圖片與邊框之間的距離*/
          }
          </style>
          <img id="img1" src="img/2.jpg" />
          <img id="img2" src="img/lss.jpg" />

          341.JavaScript語言及其特點

          Javascript一種基于對象(object-based)和事件驅動(Event Driven)的簡單的并具有安全性能的腳本語言。特點:

          解釋性: JavaScript不同于一些編譯性的程序語言,例如C、C++等,它是一種解釋性的程序語言,它的源代碼不需要經過編譯,而直接在瀏覽器中運行時被解釋。

          基于對象: JavaScript是一種基于對象的語言。這意味著它能運用自己已經創建的對象。因此,許多功能可以來自于腳本環境中對象的方法與腳本的相互作用。

          事件驅動: JavaScript可以直接對用戶或客戶輸入做出響應,無須經過Web服務程序。它對用戶的響應,是以事件驅動的方式進行的。所謂事件驅動,就是指在主頁中執行了某種操作所產生的動作,此動作稱為“事件”。比如按下鼠標、移動窗口、選擇菜單等都可以視為事件。當事件發生后,可能會引起相應的事件響應。

          跨平臺:JavaScript依賴于瀏覽器本身,與操作環境無關,只要能運行瀏覽器的計算機,并支持JavaScript的瀏覽器就可正確執行。

          342.JavaScript常用數據類型有哪些

          1、數值型(Number):整數和浮點數統稱為數值。例如85或3.1415926等。

          2、字符串型(String):由0個,1個或多個字符組成的序列。在JavaScript中,用雙引號或單引號括起來表示,如“您好”、‘學習JavaScript’等。 不區分單引號、雙引號。

          3、邏輯(布爾)型(Boolean):用true或false來表示。

          4、空(null)值(Null):表示沒有值,用于定義空的或不存在的引用。

          要注意,空值不等同于空字符串""或0。

          5、未定義(Undefined)值:它也是一個保留字。表示變量雖然已經聲明,但卻沒有賦值。

          除了以上五種基本的數據類型之外,JavaScript還支持復合數據類型,包括對象和數組兩種。

          343.html語法中哪條命令用于使一行文本折行,而不是插入一個新的段落? (B)

          A.

          < TD>

          B.

          < BR>

          C.

          < P>

          D.

          < H1>

          分析:

          A < td>定義標準表格

          C < p>表示文本一個段落

          D < h1>表示對文本標題進行強調的一種標簽

          344.Ajax的優點和缺點

          優點:減輕服務器的負擔,按需取數據,最大程度的減少冗余請求,局部刷新頁面,減少用戶心理和實際的等待時間,帶來更好的用戶體驗,基于xml標準化,并被廣泛支持,不需安裝插件等,進一步促進頁面和數據的分離

          缺點:AJAX大量的使用了javascript和ajax引擎,這些取決于瀏覽器的支持.在編寫的時候考慮對瀏覽器的兼容性.

          345.怎樣防止表單刷新重復提交問題?(說出思路即可)

          JS腳本方式:

          第一種:定義全局變量,在form提交前判斷是否已有提交過

          <script>
             var checkSubmitFlg=false;
             function checkSubmit(){
               if(checkSubmitFlg==true){
          return false;
               }
               checkSubmitFlg=true;
               return true;
            }
           </script>
          <form action="" onsubmit="return checkSubmit();">
          </form>

          第二種:單擊提交按鈕后,立刻禁用改按鈕

          第三種:單擊提交按鈕后,彈出屏蔽層,防止用戶第二次點擊

          346.JQuery.get()和JQuery.ajax()方法之間的區別是什么?

          JQuery.ajax()是對原生的javaScript的ajax的封裝,簡化了ajax的步驟,用戶可用JQuery.ajax()發送get或者post方式請求,Jquery.get()是對ajax的get方式的封裝,只能發送get方式的請求。

          347.Jquery里的緩存問題如何解決?例如($.ajax()以及$.get())

          $.ajax()請求時候加上cache:false的參數,如:

          $.ajax({
              type : "get",
              url : "XX",
              dataType : "json",
              cache:false,
              success : function(json) {
              }
          });

          $.get()請求時候加上時間,如:

          $.get("url","data"+new Date(),function(data){});

          348.Javascript是面向對象的,怎么體現Javascript的繼承關系?

          Javascript里面沒有像java那樣的繼承,javascript中的繼承機制僅僅是靠模擬的,可以使用prototype原型來實現

          349.Javascript的有幾種種變量。變量范圍有什么不同?

          可以分為三種

          1、原生類型(string,number,boolean)

          2、對象(Date,Array)

          3、特殊類型(var vara;(只什么沒有定義),var varb=null;(定義一個變量并賦值為null))

          350.Js如何獲取頁面的dom對象

          1、直接獲取

          //1.1 -- id方式獲取

          var varid=document.getElementById("unameid");

          //1.2 -- name獲取(獲取的是數組對象)

          var varname=document.getElementsByName("sex");

          //1.3 -- 元素獲取(獲取的是數組對象)

          var varinput=document.getElementsByTagName("input");

          2、間接方式獲取

          //2.1 父子關系 --childNodes

          var varchilds=document.getElementById("div01").childNodes;

          //2.2 子父關系--parentNode

          var varfather2=document.getElementById("unameid").parentNode;

          //2.3 兄弟之間相互獲取 nextSibling:下一個節點 previousSibling:上一個節點

          351.Servlet API中forward() 與redirect()的區別?

          答:為實現程序的模塊化,就需要保證在不同的Servlet之間可以相互跳轉,而Servlet中主要有兩種實現跳轉的方式:FORWARD方式與redirect方式。

          Forward() : 是服務器內部的重定向,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取出來,而客戶端并不知道,因此在客戶端瀏覽器的地址欄里不會顯示跳轉后的地址,還是原來的地址。由于在整個定向的過程中用的是同一個Request,因此FORWARD會將Request的信息帶到被定向的JSP或Servlet中使用。

          Redirect():則是客戶端的重定向,是完全的跳轉,即客戶端瀏覽器會獲取跳轉后的地址,然后重新發送請求,因此瀏覽器中會顯示跳轉后的地址。同時,由于這種方式比FORWARD方式多了一次網絡請求,因此其效率低于FORWARD方式,需要注意到的是,客戶端的重定向可以通過設置特定的HTTP 頭或寫JavaScript腳本來實現。

          鑒于以上的區別,一般當FORWARD方式可以滿足需求時,盡可能的使用FORWARD方式。但在有些情況下,例如,需要跳轉到一個其他服務器上的資源時,則必須使用redirect 方式。

          352.Session域和request域什么區別?

          作用域:存放數據,獲取數據(傳遞數據)

          有效的作用域:生命周期,作用范圍

          httpServeltRequest:

          生命周期:一次請求之間

          作用范圍:所有被請求轉發過的servlet都能獲取到

          httpSession:

          生命周期:一次會話

          作用范圍:所有的servlet都可以獲取到

          servletContex:

          生命周期:從項目開始運行到服務器關閉

          作用范圍:所有的servlet都可以獲取到

          作用域如何選用?

          httpServeltRequest:和當前請求有關的信息

          httpSession:和當前用戶有關的信息

          servletContex:訪問量比較大,不易更改

          353.頁面中有一個命名為bankNo的下拉列表,寫js腳本獲取當前選項的索引值,如果用jquery如何獲取

          var a=document.getElementsByName("bankNo")[0].value;

          var b=$("select[name=bankNo]").val();

          354.寫出要求11位數字的正則表達式

          ^[1-9]\d{10}$

          355.分別獲取指定name、Id的javascript對象,如果用jquey如何獲取

          js:
            id--document.getElementById("id");
            name--document.getElementsByName("name");
          jquery
            id--$("#id");
            name--$("元素名稱[name="name值"]");

          356.一個頁面有兩個form,如何獲取第一個form

          用id方式獲取;document.getElementById("id");

          357.如何設置一個層的可見/隱藏

          可見 : document.getElementById("divid").style.display="block";

          隱藏 : document.getElementById("divid").style.display="none";

          358.描述JSP中動態INCLUDE與靜態INCLUDE的區別?

          動態導入

          1、會將多個jsp頁面分別再編寫成java文件,編譯成class文件

          2、jsp文件中允許有相同的變量名,每個頁面互不影響

          3、當java代碼比較多優先選用動態導入

          4、效率相對較低,耦合性低

          靜態導入

          1、會將多個jsp頁面合成一個jsp頁面,再編寫成java文件,編譯成class文件

          2、jsp文件中不允許有相同的變量名

          3、當java代碼比較少或者沒有java代碼是優先選用靜態導入

          4、效率相對較高,耦合性高

          359.列舉JSP的內置對象及方法

          request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header, 和session數據的有用的方法。

          response表示HttpServletResponse對象,并提供了幾個用于設置送回 瀏覽器的響應的方法(如cookies,頭信息等)

          out對象是javax.jsp.JspWriter的一個實例,提供了幾個方法使你能用于向瀏覽器回送輸出結果

          pageContext表示一個javax.servlejt.sp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關的對象的API,并且包裝了通用的servlet相關功能的方法。

          session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態信息

          applicaton 表示一個javax.servle.ServletContext對象。這有助于查找有關servlet引擎和servlet環境的信息

          config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數。

          page表示從該頁面產生的一個servlet實例

          Exception異常

          360.列舉jsp的四大作用域

          page、request、session、application

          361.html和xhtml的區別是什么?

          HTML與XHTML之間的差別,粗略可以分為兩大類比較:一個是功能上的差別,另外是書寫習慣的差別。關于功能上的差別,主要是XHTML可兼容各大瀏覽器、手機以及PDA,并且瀏覽器也能快速正確地編譯網頁。

          因為XHTML的語法較為嚴謹, 所以如果你是習慣松散結構的HTML編寫者,那需要特別注意XHTML的規則。但也不必太過擔心,因為XHTML的規則并不太難。下面列出了幾條容易犯的錯誤,供大家引用。

          1:所有標簽都必須小寫

          在XHTML中,所有的標簽都必須小寫,不能大小寫穿插其中,也不能全部都是大寫。看一個例子。

          錯誤:< Head>< /Head>< Body>< /Body>

          正確:< head>< /head>< body>< /body>

          2:標簽必須成雙成對

          像是< p>...< /p>、< a>...< /a>、< div>...< /div>標簽等,當出現一個標簽時,必須要有對應的結束標簽,缺一不可,就像在任何程序語言中的括號一樣。

          錯誤:大家好< p>我是muki

          正確:< p>大家好< /p>< p>我是muki< /p>

          3:標簽順序必須正確

          標簽由外到內,一層層包覆著,所以假設你先寫div后寫h1,結尾就要先寫h1后寫div。只要記住一個原則“先進后出”,先彈出的標簽要后結尾。

          錯誤:< div>< h1>大家好< /div>< /h1>

          正確:< div>< h1>大家好< /h1>< /div>

          4:所有屬性都必須使用雙引號

          在XHTML 1.0中規定連單引號也不能使用,所以全程都得用雙引號。

          錯誤:< div style=font-size:11px>hello< /div>

          正確:< div style="font-size:11px">hello< /div

          5:不允許使用target="_blank"

          從XHTML 1.1開始全面禁止target屬性,如果想要有開新窗口的功能,就必須改寫為rel="external",并搭配JavaScript實現此效果。

          錯誤:< a href="http://blog.mukispace.com" target="_blank">MUKI space< /a>

          正確:< a href="http://blog.mukispace.com" rel="external">MUKI space< /a>

          362.你做的頁面用哪些瀏覽器測試過?這些測試的內核分別是什么?

          1、Trident內核代表產品Internet Explorer,又稱其為IE內核。 Trident(又稱為MSHTML),是微軟開發的一種排版引擎。使用Trident渲染引擎的瀏覽器包括:IE、傲游、世界之窗瀏覽器、Avant、騰訊TT、Netscape 8、NetCaptor、Sleipnir、GOSURF、GreenBrowser和KKman等。

          2、Gecko內核代表作品Mozilla ,FirefoxGecko是一套開放源代碼的、以C++編寫的網頁排版引擎。Gecko是最流行的排版引擎之一,僅次于Trident。使用它的最著名瀏覽器有Firefox、Netscape6至9

          3、WebKit內核代表作品Safari、Chromewebkit , 是一個開源項目,包含了來自KDE項目和蘋果公司的一些組件,主要用于Mac OS系統,它的特點在于源碼結構清晰、渲染速度極快。缺點是對網頁代碼的兼容性不高,導致一些編寫不標準的網頁無法正常顯示。主要代表作品有Safari和Google的瀏覽器Chrome。

          4、Presto內核代表作品OperaPresto, 是由Opera Software開發的瀏覽器排版引擎,供Opera 7.0及以上使用。它取代了舊版Opera 4至6版本使用的Elektra排版引擎,包括加入動態功能,例如網頁或其部分可隨著DOM及Script語法的事件而重新排版。

          363.你遇到了哪些瀏覽器的兼容性問題?怎么解決的?

          答:因為不同的瀏覽器對同一段代碼有不同的解析,造成頁面顯示效果不統一的情況;這是我們常見的兼容性問題。

          解決方法:

          1、針對不同的瀏覽器寫不同的代碼

          2、使用jquery屏蔽瀏覽器差異

          遇到不同的兼容問題,需要針對前端進行兼容適配;

          364.你知道的常用的js庫有哪些?

          1.moment.js

          舉個例子:

          用js轉換時間戳為日期

          let date=new Date(1437925575663);
                  let year=date.getFullYear() + '-';
                  let month=( date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) :
          date.getMonth() + 1 ) + '-';
                  let day=date.getDate();
          ...
                  return year + month + day;
          用moment.js
          return moment(1437925575663).format('YYYY-MM-DD HH:mm:ss')

          2.chart.js

          繪制簡單的柱狀圖,曲線圖,蛛網圖,環形圖,餅圖等完全夠用,用法比較簡單。

          3.D3.js

          功能太強大了,看首頁就知道了,感覺沒有什么圖d3繪不出來的。

          4.Rx.js

          很好的解決了異步和事件組合的問題。

          5.lodash.js

          365.Js中的三種彈出式消息提醒(警告窗口、確認窗口、信息輸入窗口)的命令是什么?

          alter(),confirm(),prompt()

          366.談談js的閉包

          答:閉包無處不在,比如:jQuery、zepto的核心代碼都包含在一個大的閉包中,所以下面我先寫一個最簡單最原始的閉包,以便讓你在大腦里產生閉包的畫面:

          function A(){
          function B(){
          console.log("Hello Closure!");
          }
          return B;
          }
          var C=A();
          C();//Hello Closure!

          這是最簡單的閉包。

          有了初步認識后,我們簡單分析一下它和普通函數有什么不同,上面代碼翻譯成自然語言如下:

          (1)定義普通函數 A

          (2)在 A 中定義普通函數 B

          (3)在 A 中返回 B

          (4)執行 A, 并把 A 的返回結果賦值給變量 C

          (5)執行 C

          把這5步操作總結成一句話就是:

          函數A的內部函數B被函數A外的一個變量 c 引用。

          把這句話再加工一下就變成了閉包的定義:

          當一個內部函數被其外部函數之外的變量引用時,就形成了一個閉包。

          因此,當你執行上述5步操作時,就已經定義了一個閉包!

          這就是閉包。

          367.寫一段js,遍歷所有的li,將每個li的內容逐個alert出來

          <body>
                <ul>
                  <li>張三:123</li>
                  <li>李四:456</li>
                  <li>王五:789</li>
                  <li>趙六:147</li>
          <ul>
             <body>
          function test(){
            var varli=document.getElementsByTagName("li");
            for (var i=0;i<varli.length;i++) {
              alert(varli[i].innerText);
            }
          }

          368.頁面上如何用JavaScript對多個checkbox全選

          //全選
          function checkAll(){
          //獲取復選框對象--數組對象
          var varcheck=document.getElementsByName("name");
          //alert(varcheck.length);
          //遍歷for
          for(var i=0;i<varcheck.length;i++){
          varcheck[i].checked=true;
          }
          }

          369.寫一個簡單的JQuery的ajax

          <script type="text/javascript" src="js/jquery-1.9.1.js" charset="utf-8"></script>
           
          <script type="text/javascript">
          function testJqAjax(){
          //url  :請求地址
          //type :請求的方式 get/post
          //data :請求的參數(json/String)
          //cache:true(走緩存 )  false(不走緩存)
          //result:當ajax發送成功后會調用success后面的函數,result:相當于形參,返回的數據
          //async:是否為異步請求 默認true異步 , false同步
          $.ajax({
          url:"TestJqAjax",
          type:"get",
          /* data:"uname=zhangsan&realname=張三豐", */
          data:{uname:"zhangsan",realname:"張三豐"},
          cache:false,
          async:false,
          success:function(result){
          alert(result);
          }
          });
          }
           
          //ajax的get方式的請求
          function jqAjaxGet(){
          //url,[data],[callback](當ajax發送成功后調用的函數)
          $.get("TestJqAjax",{uname:"zhangsan",realname:"張三豐"},function(result){
          alert(result);
          });
           
          }
           
          function  jqAjaxPost() {
          //url,[data],[callback](當ajax發送成功后調用的函數)
          $.post("TestJqAjax",{uname:"zhangsan",realname:"張三豐"},function(result){
          alert(result);
          });
          }
          </script>

          370.Js截取字符串abcdefg的efg

          function test2(){
          var str="abcdefg";
          var substr=str.substring(4);
          alert(substr);
          }

          371.http的請求頭信息包含了什么?

          請求行(請求方式,資源路徑,協議和協議版本號)

          若干請求頭

          請求實體內容

          372.http的響應碼200,404,302,500表示的含義分別是?

          200 - 確定。客戶端請求已成功

          302 - 臨時移動轉移,請求的內容已臨時移動新的位置

          404 - 未找到文件或目錄

          500 - 服務器內部錯誤

          373.Servlet中request對象的方法有?

          /獲取網絡信息
          private void getNet(HttpServletRequest req, HttpServletResponse resp) {
          System.out.println("TestHttpRequest.getNet(獲取客戶端的ip):"+req.getRemoteAddr());
          System.out.println("TestHttpRequest.getNet(獲取客戶端的端口):"+req.getRemotePort());
          System.out.println("TestHttpRequest.getNet(獲取服務器的ip):"+req.getLocalAddr());
          System.out.println("TestHttpRequest.getNet(獲取服務器的端口):"+req.getLocalPort());
           
          }
           
          //獲取實體內容
          private void getContent(HttpServletRequest req, HttpServletResponse resp) {
          //獲取單條信息
          String uname=req.getParameter("uname");
          //獲取多條信息,數組格式
          String[] favs=req.getParameterValues("fav");
          //遍歷數組
          //判斷
          if(favs!=null&&favs.length>0){
          for (int i=0; i < favs.length; i++) {
          System.out.println("TestHttpRequest.getContent(fav):"+favs[i]);
          }
          }
           
           
          String un=req.getParameter("un");
          System.out.println("TestHttpRequest.getContent():"+uname+"--"+favs+"--"+un);
           
          }
           
          //獲取請求頭信息
          private void getHeads(HttpServletRequest req, HttpServletResponse resp) {
          //獲取單條頭信息
          //System.out.println("TestHttpRequest.getHeads(獲取請求頭信息-瀏覽器頭信息):"+req.getHeader("User-Agent"));
          //獲取所有頭信息--返回枚舉類型
          Enumeration strHeads=req.getHeaderNames();
          //遍歷枚舉類型
          while (strHeads.hasMoreElements()) {
          String strhead=(String) strHeads.nextElement();
          System.out.println("TestHttpRequest.getHeads(獲取頭信息):"+req.getHeader(strhead));
          }
           
          }
           
          //獲取請求行的信息
          private void getLines(HttpServletRequest req, HttpServletResponse resp) {
          System.out.println("TestHttpRequest.getLines(請求方式***):"+req.getMethod());
          System.out.println("TestHttpRequest.getLines(資源路徑):"+req.getRequestURI());
          System.out.println("TestHttpRequest.getLines(地址):"+req.getRequestURL());
          System.out.println("TestHttpRequest.getLines(協議):"+req.getScheme());
          System.out.println("TestHttpRequest.getLines(協議的版本號):"+req.getProtocol());
          System.out.println("TestHttpRequest.getLines(獲取參數信息):"+req.getQueryString());
          System.out.println("TestHttpRequest.getLines(項目名稱***):"+req.getContextPath());
          }

          374.Javascript的常用對象有哪些

          常用對象包括日期對象Date,字符串對象String,數組對象Array

          //獲取并顯示系統當前時間

          function testDate(){
          var date=new Date();
          var fmtDate=date.getFullYear()+"-"+(date.getMonth()+1)+
          "-"+date.getDate()+"-"+date.getHours()
          +":"+date.getMinutes()+":"+date.getSeconds();
          alert(fmtDate);
          }

          //獲取出’sxt’的下標位置

          function testString(){
          var str='welcome to beijingsxt';
          alert(str.indexOf('sxt'));
           }

          //遍歷數組信息

          function testArray(){
          var arr=new Array('a',123,'c',true,'e');
          for(var item in arr){
             document.write(arr[item]+" ");
          }
          }

          375.DOM和BOM及其關系

          BOM瀏覽器對象模型,由一系列對象組成,是訪問、控制、修改瀏覽器的屬性的方法。

          DOM文檔對象模型,由一系列對象組成,是訪問、檢索、修改XHTML文檔內容與結構的標準方法。

          • 376.JavaScript中獲取某個元素的三種方式JavaScript中的三種彈出式消息提醒命令是什么?
          • 377.JavaScript操作CSS的兩種方式
          • 378.靜態網頁和動態網頁的聯系和區別
          • 379.JSP/ASP/PHP的比較
          • 380.CGI/Servlet/JSP的比較
          • 381.HTTP協議工作原理及其特點
          • 382.get和post的區別
          • 383.如何解決表單提交的中文亂碼問題
          • 384.絕對路徑、根路徑、相對路徑的含義及其區別
          • 385.如實現servlet的單線程模式
          • 386.Servlet的生命周期
          • 387.轉發和重定向的區別
          • 388.JSP的執行過程 389.JSP動作有哪些,簡述作用?
          • 390.page/request/session/application作用域區別
          • 391.JSP和Servlet的區別和聯系
          • 392.談談過濾器原理及其作用?
          • 393.jQuery相比JavaScript的優勢在哪里
          • 394.DOM對象和jQuery對象的區別及其轉換
          • 395.jQuery中$的作用主要有哪些
          • 396.Ajax含義及其主要技術
          • 397.Ajax的工作原理
          • 398.JSON及其作用
          • 399.文件上傳組件Common-fileUpload的常用類及其作用?
          • 400.說出Servlet的生命周期,并說出Servlet和CGI的區別?
          • 401.JSP 和Servlet 有有什么關系?
          • 402.JSP中的四種作用域?
          • 403.如何實現JSP或Servlet的單線程模式?
          • 404.實現會話跟蹤的技術有哪些?
          • 405.過濾器有哪些作用和用法?
          • 406.監聽器有哪些作用和用法?
          • 407.你的項目中使用過哪些JSTL標簽?
          • 408.使用標簽庫有什么好處?如何自定義JSP標簽?
          • 409.表達式語言(EL)的隱式對象及其作用?
          • 410.表達式語言(EL)支持哪些運算符?
          • 411.Servlet 3中的異步處理指的是什么?
          • 412.如何在基于Java的Web項目中實現文件上傳和下載?
          • 413.簡述值棧(Value-Stack)的原理和生命周期
          • 414.闡述Session加載實體對象的過程。
          • 415.怎么防止重復提交
          • 416.$(document).ready(function(){}) jQuery(document).ready(function(){}); 有什么區別?
          • 417.寫出輸出結果
          • 418.web項目從瀏覽器發起交易響應緩慢,請簡述從哪些方面如數分析

          所有的面試題目都不是一成不變的,特別是像一線大廠,上面的面試題只是給大家一個借鑒作用,最主要的是給自己增加知識的儲備,有備無患。最后給大家分享Spring系列的學習筆記和面試題,包含spring面試題、spring cloud面試題、spring boot面試題、spring教程筆記、spring boot教程筆記、最新阿里巴巴開發手冊(63頁PDF總結)、2022年Java面試手冊。一共整理了1184頁PDF文檔。私信博主(777),祝大家更上一層樓!!!


          主站蜘蛛池模板: 日本精品少妇一区二区三区| 国产成人久久一区二区三区| 97精品国产福利一区二区三区| 日韩免费一区二区三区在线| 无码囯产精品一区二区免费 | 亚洲国产精品一区二区三区在线观看| 国产丝袜美女一区二区三区| 亚洲熟妇av一区二区三区漫画 | 一区二区三区四区在线播放| 一区视频免费观看| 美女视频免费看一区二区| 精彩视频一区二区三区| 无码精品人妻一区| 精品久久国产一区二区三区香蕉| 亚洲第一区精品日韩在线播放| 日本一区二区高清不卡| 国产成人精品a视频一区| 东京热无码av一区二区| 国偷自产av一区二区三区| 亲子乱av一区二区三区| 亚洲无删减国产精品一区| 精品无码一区在线观看| 亚洲中文字幕乱码一区| 国产免费私拍一区二区三区| 日韩精品无码久久一区二区三 | 亚洲夜夜欢A∨一区二区三区| 一区二区在线观看视频| 欲色aV无码一区二区人妻| 国产伦精品一区二区三区四区| 一区二区不卡久久精品| 久久久久久综合一区中文字幕| 日韩人妻精品一区二区三区视频| 亚洲AV香蕉一区区二区三区| 激情爆乳一区二区三区| 国产在线精品一区免费香蕉| 亚洲AV无码第一区二区三区| 天堂Av无码Av一区二区三区| 亚洲av午夜精品一区二区三区 | 日韩精品无码一区二区三区不卡| 日日摸夜夜添一区| 秋霞鲁丝片一区二区三区|