WEB方面面試題詳解

  1. WEB 應用中若是有.class 和.jar 類型的文件通常分別應該放
    在什麼位置?
    答:
    .class 文件放在 WEB-INF/classes 文件下,.jar 文件放在 WEB-INF/lib
    文件夾下
  2. 元素中有一個輸入框(<input type=」text」 name=」
    username」id=」username」value=」」/>,請用 JavaScript
    語言寫一行代碼,取得這個輸入框中的值。
    答:
    document.getElementById(「username」).value;
  3. 簡單描述一下 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 再負責響應用戶請求。
  4. 請簡單描述下幾個您熟悉 JavaScript 庫,它們有哪些做用和
    特色?
    JavaScript 高級程序設計(特別是對瀏覽器差別的複雜處理),一般很困難
    也很耗時。爲了應對這些調整,許多的 JavaScript 庫應運而生。這些
    JavaScript 庫常被稱爲 JavaScript 框架。
    jQuery:
    Ext JS - 可定製的 widget,用於構建富因特網應用程序(rich Internet
    applications)。
    Prototype
    MooTools。
    YUI - Yahoo! User Interface Framework,涵蓋大量函數的大型庫,從簡
    單的 JavaScript 功能到完整的 internet widget。
  5. 簡單描述 HTML,CSS,Javascript 在 Web 開發中分別起
    什麼做用?
    一、什麼是 HTML(超文本標記語言 Hyper Text Markup Language),
    HTML 是用來描述網頁的一種語言。
    二、CSS(層疊樣式表 Cascading Style Sheets),樣式定義如何顯示 HTML
    元素,語法爲:selector {property:value} (選擇符 {屬性:值})
    三、JavaScript 是一種腳本語言,其源代碼在發往客戶端運行以前不需通過
    編譯,而是將文本格式的字符代碼發送給瀏覽器由瀏覽器解釋運行
    對於一個網頁,HTML 定義網頁的結構,CSS 描述網頁的樣子,JavaScript
    設置一個很經典的例子是說 HTML 就像 一我的的骨骼、器官,而 CSS 就是
    人的皮膚,有了這兩樣也就構成了一個植物人了,加上 javascript 這個植物
    人就能夠對外界刺激作出反應,能夠思 考、運動、能夠給本身整容化妝(改
    變 CSS)等等,成爲一個活生生的人。
    若是說 HTML 是肉身、CSS 就是皮相、Javascript 就是靈魂。沒有
    Javascript,HTML+CSS 是植物人,沒有 Javascript、CSS 是個毀容的植物
    人。
    若是說 HTML 是建築師,CSS 就是幹裝修的,Javascript 是魔術師。
  6. 當 DOM 加載完成後要執行的函數,下面哪一個是正確的()
    A JQuery(expression, [context])
    B. JQuery(html, [ownerDocument])
    C. JQuery(callback)
    答案:C
  7. 舉例說明 JAVA 中如何解析 xml,不一樣方式有和優缺點?
    答:
  8. DOM(Document Object Model)
    DOM是用與平臺和語言無關的方式表示XML 文檔的官方W3C標準。DOM
    是以層次結構組織的節點或信息片段的集合。這個層次結構容許開發人員在
    樹中尋找特定信息。分析該結構一般須要加載整個文檔和構造層次結構,然
    後才能作任何工做。因爲它是基於信息層次的,於是 DOM 被認爲是基於樹
    或基於對象的。
    【優勢】
    ①容許應用程序對數據和結構作出更改。
    ②訪問是雙向的,能夠在任什麼時候候在樹中上下導航,獲取和操做任意部分的
    數據。
    【缺點】
    ①一般須要加載整個 XML 文檔來構造層次結構,消耗資源大。
  9. 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。
  10. 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 開發人員。
    【缺點】
    ①沒有較好的靈活性。
    ②性能較差。
  11. 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 較爲複雜。
    2、比較
  12. DOM4J 性能最好,連 Sun 的 JAXM 也在用 DOM4J。目前許多開源項目
    中大量採用 DOM4J,例如大名鼎鼎的 Hibernate 也用 DOM4J 來讀取 XML
    配置文件。若是不考慮可移植性,那就採用 DOM4J.
  13. JDOM 和 DOM 在性能測試時表現不佳,在測試 10M 文檔時內存溢出,
    但可移植。在小文檔狀況下還值得考慮使用 DOM 和 JDOM.雖然 JDOM 的
    開發者已經說明他們指望在正式發行版前專一性能問題,可是從性能觀點來
    看,它確實沒有值得推薦之處。另外,DOM 還是一個很是好的選擇。DOM
    實現普遍應用於多種編程語言。它仍是許多其它與 XML 相關的標準的基礎,
    由於它正式得到 W3C 推薦(與基於非標準的 Java 模型相對),因此在某些
    類型的項目中可能也須要它(如在 JavaScript 中使用 DOM)。
  14. SAX 表現較好,這要依賴於它特定的解析方式-事件驅動。一個 SAX 檢
    測即將到來的 XML 流,但並無載入到內存(固然當 XML 流被讀入時,會
    有部分文檔暫時隱藏在內存中)。
    個人見解:若是 XML 文檔較大且不考慮移植性問題建議採用 DOM4J;如
    果 XML 文檔較小則建議採用 JDOM;若是須要及時處理而不須要保存數據
    則考慮 SAX。但不管如何,仍是那句話:適合本身的纔是最好的,若是時間
    容許,建議你們講這四種方法都嘗試一遍而後選擇一種適合本身的便可。
  15. char 型變量中能不能存儲一箇中文漢字?
    答:
    1.java 採用 unicode 編碼,2 個字節(16 位)來表示一個字符, 不管是漢
    字仍是數字,字母,或其餘語言均可以存儲。
    2.char 在 java 中是 2 個字節,因此能夠存儲中文
  16. 一個類能夠實現多個接口,但只能繼承一個抽象類。
    下面接着再說說二者在應用上的區別:
    接口更多的是在系統架構設計方法發揮做用,主要用於定義模塊之間的通訊
    契約。而抽象類在代碼實現方面發揮做用,能夠實現代碼的重用,例如,模
    板方法設計模式是抽象類的一個典型應用,假設某個項目的全部 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 個方面逐一去比較回答,接着從第三者繼承的角
    度的回答,特別是最後用了一個典型的例子來展示本身深厚的技術功底。
  17. 比較一下 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)是一等公民。對於這種問題,在面試
    時仍是用本身的語言回答會更加靠譜。
  18. 何時用 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 標記。還能夠在包的基礎上
    啓用或者禁用斷言。能夠在預計正常狀況下不會到達的任何位置上放置斷言。
    斷言能夠用於驗證傳遞給私有方法的參數。不過,斷言不該該用於驗證傳遞
    給公有方法的參數,由於無論是否啓用了斷言,公有方法都必須檢查其參數。
    不過,既能夠在公有方法中,也能夠在非公有方法中利用斷言測試後置條件。
    另外,斷言不該該以任何方式改變程序的狀態。
  19. 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)等。在這些圖形化符號中,有三種圖最爲重要,
    分別是:用例圖(用來捕獲需求,描述系統的功能,經過該圖能夠迅速的了
    解系統的功能模塊及其關係)、類圖(描述類以及類與類之間的關係,經過
    該圖能夠快速瞭解系統)、時序圖(描述執行特定任務時對象之間的交互關
    系以及執行順序,經過該圖能夠了解對象能接收的消息也就是說對象可以向
    外界提供的服務)。
    用例圖:
    類圖:
    時序圖:
  20. 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 容許應用程序代碼把這些事件逐個拉出來,
    而不用提供在解析器方便時從解析器中接收事件的處理程序。
  21. 你在項目中哪些地方用到了 XML? 答: XML 的主要做用有兩個方面:數據交換(曾經被稱爲業界數據交換的
    事實標準,如今此項功能在不少時候都被 JSON 取代)和信息配置。在作數
    據交換時,XML 將數據用標籤組裝成起來,而後壓縮打包加密後經過網絡
    傳送給接收者,接收解密與解壓縮後再從 XML 文件中還原相關信息進行處
    理。目前不少軟件都使用 XML 來存儲配置信息,不少項目中咱們一般也會
    將做爲配置的硬代碼(hard code)寫在 XML 文件中,Java 的不少框架也
    是這麼作的。
  22. 用 JavaScript 實現用正則表達式驗證,某個字符串是合法的
    6 位數字的郵編的函數
    Function testE(ss){
    var reg=/[1][0-9]{5}$/;
    if(req.test(ss)){
    alert(「郵編 OK」)
    }else{
    alert(「郵編格式不正確」); } }
  23. 請使用 JQuery 將頁面上的全部元素邊框設置爲 2pix 寬的虛
    線?
    $(「*」).css(「border」,」2px dashed」)
  24. 如何設定 JQuery 異步調用仍是同步調用?
    答案:
    調用 jQuery 中的 ajax 函數,設置其 async 屬性來代表是異步仍是同步,
    以下:
    $.ajax({
    async:true//表示異步,false 表示同步
    })
  25. 說出 3 條以上 firefox 和 IE 的瀏覽器兼容問題?
    答案:
    兼容 firefox 的 outerHTML,FF 中沒有 outerHtml 的方法
    IE 下,能夠使用()或[]獲取集合類對象;Firefox 下,只能使用[]獲取集合類對象.
    解決方法:統一使用[]獲取集合類對象.
    IE 下,能夠使用獲取常規屬性的方法來獲取自定義屬性,也能夠使用
    getAttribute()獲取自定義屬性;Firefox 下,只能使用 getAttribute()獲取自
    定義屬性.解決方法:統一經過 getAttribute()獲取自定義屬性
  26. 請用 Jquery 語言寫出 ajax 請求或者 post 請求代碼
    $.post(「show」,{uname=」張三」,pwd=」123」},function(data){
    alert(data)
    })
  27. body中的onload()函數和jQuery中document.ready()
    有什麼區別?
    答案:
    ready 事件的觸發,表示文檔結構已經加載完成(不包含圖片等非文字媒體
    文件)
    onload 事件的觸發,表示頁面包含圖片等文件在內的全部元素都加載完成。
  28. jQuery 中有哪幾種類型的選擇器?
    答案:
    基本選擇器
    層次選擇器
    基本過濾選擇器
    內容過濾選擇器
    可見性過濾選擇器
    屬性過濾選擇器
    子元素過濾選擇器
    表單選擇器
    表單過濾選擇器
  29. EasyUI 中 datagrid 刷新當前數據的方法?
    答案:使用 reload()便可
  30. 分別寫出一個 div 居中和其中的內容居中的 css 屬性設置
    Div 居中:
    margin:auto 0px;
    內容居中:
    text-align:center;
  31. 概述一下 session 與 cookie 的區別
    答案:
    存儲角度:
    Session 是服務器端的數據存儲技術,cookie 是客戶端的數據存儲技術
    解決問題角度:
    Session 解決的是一個用戶不一樣請求的數據共享問題,cookie 解決的是不
    同請求的請求數據的共享問題
    生命週期角度:
    Session 的 id 是依賴於 cookie 來進行存儲的,瀏覽器關閉 id 就會失效
    Cookie 能夠單獨的設置其在瀏覽器的存儲時間。
  32. JavaScript 中 null 和 undefined 是否有區別?有哪些區
    別?
    答案:
    賦值角度說明:
    null 表示此處沒有值,undefined 表示此處定義了可是沒有賦值
    從數據轉換角度:
    Null 在作數值轉換時會被轉換爲 0,undefined 會被轉換爲 NaN
  33. Servlet 中的 doPost 和 doGet 方法有什麼區別?它們在傳遞
    和獲取參數上有什麼區別?
    答案:
    區別:doPost 用來處理 post 請求,doGet 用來處理 get 請求,獲取參數:
    獲取的參數是相同的都是 HttpServletRequest \HttpServletResponse
  34. 請寫出一段 jQuery 代碼,實現把當前頁面中全部的 a 元索中
    class 屬性爲「view-link」的連接都改成在新窗口中打開
    答案:
    $(「a[class=view-link]」).attr(「target」,」_blank」)
  35. 以下 JavaScript 代碼的輸出爲:
    var scope ="global scope";
    function checkscope() {
    var scope ="local scope」;
    return function() { return scope}
    }
    console.log (checkscope()());
    輸出:global scope
  36. Jquery 中’.get()’與’.eq()’的區別
    eq 返回的是一個 jquery 對象 get 返回的是一個 html 對象
  37. 如何給 weblogic 定內存的大小?
    在啓動 Weblogic 的腳本中(位於所在 Domian 對應服務器目錄下的
    startServerName),增長 set MEM_ARGS=-Xms32m -Xmx200m,能夠
    調整最小內存爲 32M,最大 200M
  38. TCP 爲什麼採用三次握手來創建鏈接,若釆用二次握手能夠嗎,
    請說明理由?
    三次握手是爲了防止已失效的鏈接請求再次傳送到服務器端。 二次握手不
    可行,由於:若是因爲網絡不穩定,雖然客戶端之前發送的鏈接請求以到達
    服務方,但服務方的贊成鏈接的應答未能到達客戶端。則客戶方要從新發送
    鏈接請求,若採用二次握手,服務方收到重傳的請求鏈接後,會覺得是新的
    請求,就會發送贊成鏈接報文,並新開進程提供服務,這樣會形成服務方資
    源的無謂浪費
  39. 如下 HTTP 相應狀態碼的含義描述正確的是()
    A. 200ok表示請求成功
    B. 400 不良請求表示服務器未發現與請求 URL 匹配內容
    C. 404未發現表示因爲語法錯誤兒致使服務器沒法理解請求信息
    D. 500 內部服務器錯誤,沒法處理請求
    答案:D
    分析:
    A 200ok 表示的意思是一切正常。通常用於相應 GET 和 POST 請求。這
    個狀態碼對 servlet 是缺省的;若是沒有調用 setStatus 方法的話,就會得
    到 200。
    B 400 表示指出客戶端請求中的語法錯誤
    C 404 客戶端所給的地址沒法找到任何資源
  40. JSP 頁面包括哪些元素?()
    A. JSP命令
    B. JSP Action
    C. JSP腳本
    D. JSP 控件
    答案:C
    分析:JSP 頁面元素構成以下,所以 ABD 錯誤
  41. Ajax 有四種技術組成:DOM,CSS,JavaScript,
    XmlHttpRequest,其中控制文檔結構的是()
    A. DOM
    B. CSS
    C. JavaScript
    D. XmlHttpRequest
    答案:A
  42. 下面關於 session 的用法哪些是錯誤的?()
    A. HttpSession session=new HttpSession();
    B. String haha=session getParameler(:haha」);
    C. session.removeAttribute(「haha」);
    D. session.setAttribute(:haha:);XmlHttpRequest
    答案:A
  43. Jsp 九大內置對象
    答案:
    一、request 對象
    request 對象是 javax.servlet.httpServletRequest 類型的對象。 該對象代
    表了客戶端的請求信息,主要用於接受經過 HTTP 協議傳送到服務器的數據。
    (包括頭信息、系統信息、請求方式以及請求參數等)。request 對象的做用
    域爲一次請求。
    二、response 對象
    response 表明的是對客戶端的響應,主要是將 JSP 容器處理過的對象傳回到
    客戶端。response 對象也具備做用域,它只在 JSP 頁面內有效。
    三、session 對象
    session 對象是由服務器自動建立的與用戶請求相關的對象。服務器爲每一個用
    戶都生成一個 session 對象,用於保存該用戶的信息,跟蹤用戶的操做狀態。
    session 對象內部使用 Map 類來保存數據,所以保存數據的格式爲
    「Key/value」。 session 對象的 value 能夠使複雜的對象類型,而不只僅局
    限於字符串類型。
    四、application 對象
    application 對象可將信息保存在服務器中,直到服務器關閉,不然
    application 對象中保存的信息會在整個應用中都有效。與 session 對象相比,
    application 對象生命週期更長,相似於系統的「全局變量」。 五、out 對象
    out 對象用於在 Web 瀏覽器內輸出信息,而且管理應用服務器上的輸出緩衝
    區。在使用 out 對象輸出數據時,能夠對數據緩衝區進行操做,及時清除緩
    衝區中的殘餘數據,爲其餘的輸出讓出緩衝空間。待數據輸出完畢後,要及時
    關閉輸出流。
    六、pageContext 對象
    pageContext 對象的做用是取得任何範圍的參數,經過它能夠獲取 JSP 頁面
    的 out、request、reponse、session、application 等對象。pageContext
    對象的建立和初始化都是由容器來完成的,在 JSP 頁面中能夠直接使用
    pageContext 對象。
    七、config 對象
    config 對象的主要做用是取得服務器的配置信息。經過 pageConext 對象的
    getServletConfig() 方法能夠獲取一個 config 對象。當一個 Servlet 初始化
    時,容器把某些信息經過 config 對象傳遞給這個 Servlet。 開發者能夠在
    web.xml 文件中爲應用程序環境中的 Servlet 程序和 JSP 頁面提供初始化參
    248
    尚學堂 Java 面試題大全及參考答案
    數。
    八、page 對象
    page 對象表明 JSP 自己,只有在 JSP 頁面內纔是合法的。 page 隱含對象
    本質上包含當前 Servlet 接口引用的變量,相似於 Java 編程中的 this 指針。
    九、exception 對象
    exception 對象的做用是顯示異常信息,只有在包含 isErrorPage="true" 的
    頁面中才能夠被使用,在通常的 JSP 頁面中使用該對象將沒法編譯 JSP 文件。
    excepation 對象和 Java 的全部對象同樣,都具備系統提供的繼承結構。
    exception 對象幾乎定義了全部異常狀況。在 Java 程序中,能夠使用
    try/catch 關鍵字來處理異常狀況; 若是在 JSP 頁面中出現沒有捕獲到的異
    常,就會生成 exception 對象,並把 exception 對象傳送到在 page 指令
    中設定的錯誤頁面中,而後在錯誤頁面中處理相應的 exception 對象。
  44. 如何配置一個 servlet?
    在 web.xml 中使用以下標籤:








    或者使用註解方式:
    @WebServlet(name="servlet", urlPatterns={"/*"})
  45. JavaScript,如何定義含有數值 1 至 8 的數組?
    答: var arr=[1,2,3,4,5,6,7,8]
  46. 如下 JavaScipt 語句會產生運行錯誤的是_()
    A. var obj=( );
    B. var obj=[ ];
    C. var obj=//;
    D. var obj=1;
    答案:AC
  47. 在 JSP 中,下面__()__塊中能夠定義一個新類:
    A. <% %>
    B. <% ! %>
    C. <%@ %>
    D. <%=%>
    答案:B
    分析:B <% ! %> 可用做聲明
    A 不正確
    C 爲引用 xxx,好比<% @page xxxxx%>
    D 爲表達式
  48. 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…
  49. 什麼是錨連接
    錨連接是帶有文本的超連接。能夠跳轉到頁面的某個位置,適用於頁面內容
    較多,超過一屏的場合 。分爲頁面內的錨連接和頁面間的錨連接 。
    例如:
    1F2F
    跳轉到 2F 標記位置
    說明:
    1.在標記位置利用 a 標籤的 name 屬性設置標記。
    2.在導航位置經過 a 標籤的 href 屬性用#開頭加 name 屬性值便可跳轉
    錨點位置。
  50. HTML 字符實體的做用及其經常使用字符實體
    有些字符,好比說「<」字符,在 HTML 中有特殊的含義,所以不能在文本
    中使用。想要在 HTML 中顯示一個小於號「<」,須要用到字符實體:<
    或者<
    字符實體擁有三個部分:一個 and 符號(&),一個實體名或者一個實體號,
    最後是一個分號(;)
    經常使用字符實體:
    顯示結果 描述 實體名 實體號
    空格    
    < 小於 < <

大於 > >
& and 符號 & &
' 單引號 ' (IE 不支持) '
" 引號 " "
£ 英鎊 £ £
¥ 人民幣元 ¥ ¥
§ 章節 § §
© 版權 © ©javascript

  1. HTML 表單的做用和經常使用表單項類型
    表單的做用:
    利用表單能夠收集客戶端提交的有關信息。
    經常使用表單項類型:
    input 標籤
    type 屬性
    功能 input 標籤
    type 屬性
    功能
    text 單行本框 reset 重置按鈕
    password 密碼框 submit 提交按鈕
    radio 單選按鈕 textarea 文本域
    checkbox 複選框 select 下拉框
    button 普通按鈕 hidden 隱藏域
  2. 表格、框架、div 三種 HTML 佈局方式的特色
    優勢 缺點 應用場合
    表格 方便排列有規律、結
    構均勻的內容或數據
    產生垃圾代碼、影響
    頁面下載時間、靈活
    內容或數據整齊的
    頁面
    性不大難於修改
    框架 支持滾動條、方便導

    節省頁面下載時間等
    兼容性很差,保存時
    不方便、應用範圍有

    小型商業網站、論壇
    後臺管理
    Div 代碼精簡、提升頁面
    下載速度、表現和內
    容分離
    比較靈活、難於控制 複雜的不規則頁面、
    業務種類較多的大
    型商業網站
  3. form 中 input 設置爲 readonly 和 disabled 的區別
    readonly disabled
    有效對象 .只針對 type 爲
    text/password 有效
    對全部表單元素有效
    表單提交 當表單元素設置 readonly
    後,表單提交能將該表單元
    素的值傳遞出去。
    當表單元素設置 disabled 後,表
    單提交不能將該表單元素的值傳
    遞出去。
  4. CSS 的定義和做用
    CSS 的定義:CSS 是 Cascading Style Sheets(層疊樣式表)的簡稱。
    CSS 是一系列格式規則,它們控制網頁內容的外觀。CSS 簡單來講就是用來
    美化網頁用的。
    CSS 的具體做用包括:
    使網頁豐富多彩,易於控制。
    頁面的精確控制,實現精美、複雜頁面 。
    樣式表能實現內容與樣式的分離,方便團隊開發。
    樣式複用、方便網站的後期維護。
  5. CSS2 經常使用選擇器類型及其含義
    選擇器名稱 案例 語法格式
    標籤選擇器 h3{font-size:24px;font-famil
    y:"隸書「; }

JSP

元素標籤名{樣式屬性} 類選擇器 .red {color:#F00;}
  • Oracle
  • . 元素標籤 class 屬性值 {樣式屬性} ID 選擇器 #p1 {background-color:#0F0;}

    contentcss

    #元素標籤 id 屬性值{樣式 屬性} 包含選擇器 div h3{color:red;}

    CSS 層疊樣式表

    父元素標籤 子元素標籤{ 樣式屬性 } 子選擇器 div>ul{color:blue;}
    父元素標籤名>子元素名{ 樣式屬性
    • 測試 1
      1. 嵌套元素
      2. 嵌套元素
      3. 嵌套元素
      4. 嵌套元素
    • 測試 1
    • 測試 1
    } 339. 引入樣式的三種方式及其優先級別 三種引用方式: 1. 外部樣式表(存放.css 文件中) 不須要 style 標籤 2. 嵌入式樣式表 3.內聯樣式 標籤屬性名爲 style

    優先級級別:內聯定義最高、內部 CSS 次之、外部 CSS 優先級最低。。 340. 盒子模型 盒子模型相似於生活中的盒子,具備 4 個屬性,外邊距,內 邊距,邊框,內容。 外邊距:margin,用於設置元素和其餘元素之間的距離。 內邊距:padding,用於設置元素內容和邊框之間的距離。 邊框:border,用於設置元素邊框粗細,顏色,線型。 內容:width,height,用於設置元素內容顯示的大小。 例如: 341. JavaScript 語言及其特色 Javascript 一種基於對象(object-based)和事件驅動(Event Driven)的簡單 的並具備安全性能的腳本語言。特色: 解釋性: JavaScript 不一樣於一些編譯性的程序語言,例如 C、C++等,它 是一種解釋性的程序語言,它的源代碼不須要通過編譯,而直接在瀏覽器中 運行時被解釋。 基於對象:JavaScript 是一種基於對象的語言。這意味着它能運用本身已經 建立的對象。所以,許多功能能夠來自於腳本環境中對象的方法與腳本的相 互做用。 事件驅動:JavaScript 能夠直接對用戶或客戶輸入作出響應,無須通過 Web 服務程序。它對用戶的響應,是以事件驅動的方式進行的。所謂事件驅動, 就是指在主頁中執行了某種操做所產生的動做,此動做稱爲「事件」。好比 按下鼠標、移動窗口、選擇菜單等均可以視爲事件。當事件發生後,可能會 引發相應的事件響應。 跨平臺:JavaScript 依賴於瀏覽器自己,與操做環境無關,只要能運行瀏覽器 的計算機,並支持 JavaScript 的瀏覽器就可正確執行。 342. JavaScript 經常使用數據類型有哪些 一、數值型(Number):整數和浮點數統稱爲數值。例如 85 或 3.1415926 等。 二、字符串型(String):由 0 個,1 個或多個字符組成的序列。在 JavaScript 中,用雙引號或單引號括起來表示,如「您好」、‘學習 JavaScript’等。 尚學堂 Java 面試題大全及參考答案 260 不區分單引號、雙引號。 三、邏輯(布爾)型(Boolean):用 true 或 false 來表示。 四、空(null)值(Null):表示沒有值,用於定義空的或不存在的引用。 要注意,空值不等同於空字符串""或 0。 五、未定義(Undefined)值:它也是一個保留字。表示變量雖然已經聲明, 但卻沒有賦值。 除了以上五種基本的數據類型以外,JavaScript 還支持複合數據類型,包括 對象和數組兩種。 343. html 語法中哪條命令用於使一行文本折行,而不是插入一個 新的段落? (B) A. B.
    C.

    D. html

    分析: A 定義標準表格 C

    表示文本一個段落 D 前端

    表示對文本標題進行強調的一種標籤 344. Ajax 的優勢和缺點 優勢:減輕服務器的負擔,按需取數據,最大程度的減小冗餘請求,局部 刷新頁面,減小用戶心理和實際的等待時間,帶來更好的用戶體驗,基於 xml 尚學堂 Java 面試題大全及參考答案 標準化,並被普遍支持,不需安裝插件等,進一步促進頁面和數據的分離 缺點:AJAX 大量的使用了 javascript 和 ajax 引擎,這些取決於瀏覽器 的支持.在編寫的時候考慮對瀏覽器的兼容性. 345. 怎樣防止表單刷新重複提交問題?(說出思路便可) JS 腳本方式: 第一種:定義全局變量,在 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 的有幾種種變量。變量範圍有什麼不一樣? 能夠分爲三種 一、原生類型(string,number,boolean) 二、對象(Date,Array) 三、特殊類型(var vara;(只什麼沒有定義),var varb = null;(定義一個變 量並賦值爲 null)) 350. Js 如何獲取頁面的 dom 對象 一、直接獲取 //1.1 -- id 方式獲取 var varid = document.getElementById("unameid"); //1.2 -- name 獲取(獲取的是數組對象) var varname = document.getElementsByName("sex"); //1.3 -- 元素獲取(獲取的是數組對象) var varinput = document.getElementsByTagName("input"); 二、間接方式獲取 //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 的區別? 動態導入 一、會將多個 jsp 頁面分別再編寫成 java 文件,編譯成 class 文件 二、jsp 文件中容許有相同的變量名,每一個頁面互不影響 三、當 java 代碼比較多優先選用動態導入 四、效率相對較低,耦合性低 靜態導入 一、會將多個 jsp 頁面合成一個 jsp 頁面,再編寫成 java 文件,編譯成 class 文件 二、jsp 文件中不容許有相同的變量名 三、當 java 代碼比較少或者沒有 java 代碼是優先選用靜態導入 四、效率相對較高,耦合性高 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 中,全部的標籤都必須小寫,不能大小寫穿插其中,也不能所有 都是大寫。看一個例子。 錯誤: 正確: 2:標籤必須成雙成對 像是

    ...html5

    ...
    ...
    標籤等,當出現一個標籤 時,必需要有對應的結束標籤,缺一不可,就像在任何程序語言中的括號一 樣。 錯誤:你們好

    我是 muki 正確:java

    你們好node

    我是 mukijquery

    3:標籤順序必須正確 標籤由外到內,一層層包覆着,因此假設你先寫 div 後寫 h1,結尾就要先 寫 h1 後寫 div。只要記住一個原則「先進後出」,先彈出的標籤要後結尾。 錯誤:

    你們好

    正確:

    你們好

    4:全部屬性都必須使用雙引號 在 XHTML 1.0 中規定連單引號也不能使用,因此全程都得用雙引號。 錯誤:
    hello
    正確:
    hello
    MUKI space 正確: MUKI space 362. 你作的頁面用哪些瀏覽器測試過?這些測試的內核分別是什 麼? 一、Trident 內核表明產品 Internet Explorer,又稱其爲 IE 內核。 Trident(又稱爲 MSHTML),是微軟開發的一種排版引擎。使用 Trident 渲染引擎的瀏覽器包括:IE、傲遊、世界之窗瀏覽器、Avant、騰訊 TT、 Netscape 八、NetCaptor、Sleipnir、GOSURF、GreenBrowser 和 KKman 等。 二、Gecko 內核表明做品 Mozilla FirefoxGecko 是一套開放源代碼的、以 C++編寫的網頁排版引擎。Gecko 是最流行的排版引擎之一,僅次於Trident。使用它的最著名瀏覽器有Firefox、 Netscape6 至 9。 三、WebKit 內核表明做品 Safari、Chromewebkit 是一個開源項目,包含了來自 KDE 項目和蘋果公司的一些組件,主要用於 Mac OS 系統,它的特色在於源碼結構清晰、渲染速度極快。缺點是對網頁 代碼的兼容性不高,致使一些編寫不標準的網頁沒法正常顯示。主要表明做 品有 Safari 和 Google 的瀏覽器 Chrome。 四、Presto 內核表明做品 OperaPresto 是由 Opera Software 開發的瀏覽器排版引擎,供 Opera 7.0 及以上使用。 它取代了舊版 Opera 4 至 6 版本使用的 Elektra 排版引擎,包括加入動態功 能,例如網頁或其部分可隨着 DOM 及 Script 語法的事件而從新排版。 363. 你遇到了哪些瀏覽器的兼容性問題?怎麼解決的? 答:由於不一樣的瀏覽器對同一段代碼有不一樣的解析,形成頁面顯示效果不統 一的狀況;這是咱們常見的兼容性問題。 解決方法: 一、針對不一樣的瀏覽器寫不一樣的代碼 二、使用 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 出來
    • 張三:123
    • 李四:456
    • 王五:789
    • 趙六:147
      • function test(){ var varli = document.getElementsByTagName("li"); for (var i=0;i 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 文檔內容與 結構的標準方法。 關係: – BOM 描述了與瀏覽器進行交互的方法和接口 – DOM 描述了處理網頁內容的方法和接口 – DOM 屬於 BOM 的一個屬性 376. JavaScript 中獲取某個元素的三種方式 JavaScript 中的三種彈出式消 息提醒命令是什麼? window.alert() 顯示一個提示信息 window.confirm() 顯示一個帶有提示信息、肯定和取消按鈕的對話框 window.prompt() 顯示可提示用戶輸入的對話框 setTimeout 與 setInterval 的區別 setTimeout 和 setInterval 的語法相同。它們都有兩個參數,一個是將要執行的代碼字 符串,還有一個是以毫秒爲單位的時間間隔,當過了那個時間段以後就將執行那段代碼。 不過這兩個函數仍是有區別的,setInterval 在執行完一次代碼以後,通過了那個固定的 時間間隔,它還會自動重複執行代碼,而 setTimeout 只執行一次那段代碼。 window.setTimeout("function",time);//設置一個超時對象,只執行一次,無週期 window.setInterval("function",time);//設置一個超時對象,週期='交互時間' 377. JavaScript 操做 CSS 的兩種方式 第一種方式:操做元素的屬性(對象.style.樣式名=樣式值;) //改變直接樣式 var child2 = document.createElement("div"); child2.innerHTML = "child2"; child2.style.fontWeight = "bold"; parent.appendChild(child2); 第二種方式:操做元素的類(對象.className=類;) 例如: var parent = document.getElementById("parent"); //改變 className var child0 = document.createElement("div"); child0.innerHTML = "child0"; child0.className = "newDiv"; parent.appendChild(child0); 378. 靜態網頁和動態網頁的聯繫和區別 聯繫: 1)靜態網頁是網站建設的基礎,靜態網頁和動態網頁都要使用到 HTMl 語言。 2)靜態網頁是相對於動態網頁而言,指沒有後臺數據庫、不含程序和不可交互的網 頁、是標準的 HTML 文件,它的文件擴展名是.htm 或.html。你編的是什麼它顯示的就 是什麼、不會有任何改變。 3)靜態網頁和動態網頁之間並不矛盾,爲了網站適應搜索引擎檢索的須要,動態網 站能夠採用靜動結合的原則,適合採用動態網頁的地方用動態網頁,若是必要使用靜態 網頁,則能夠考慮用靜態網頁的方法來實現,在同一個網站上,動態網頁內容和靜態網 頁內容同時存在也是很常見的事情。 區別: 1)程序是否在服務器端運行,是重要標誌。在服務器端運行的程序、網頁、組件, 屬於動態網頁,它們會隨不一樣客戶、不一樣時間,返回不一樣的網頁,例如 ASP、PHP、JSP、 ASP.net、CGI 等。運行於客戶端的程序、網頁、插件、組件,屬於靜態網頁,例如 html 頁、Flash、javascript、VBscript 等等,它們是永遠不變的。 2)編程技術不一樣。靜態網頁和動態網頁主要根據網頁製做的語言來區分。靜態網頁 使用語言:HTML。 動態網頁使用語言:HTML+ASP 或 HTML+PHP 或 HTML+JSP 等其它網站動態語言。 3)被搜索引擎收錄狀況不一樣。因爲編程技術不容,靜態網頁是純粹 HTML 格式的網 頁,頁面內容穩定,不管是網頁是否被訪問,頁面都被保存在網站服務器上,很容易被 搜索引擎收錄。而動態網頁的內容是當用戶點擊請求時才從數據庫中調出返回給用戶一 個網頁的內容,並非存放在服務器上的獨立文件,相比較於靜態網頁而言,動態網頁 很難被搜索引擎收錄。 4)用戶訪問速度不一樣。用戶訪問動態網頁時,網頁在得到搜索指令後通過數據庫 的調查匹配,再將與指令相符的內容傳遞給服務器,經過服務器的編譯將網頁編譯成標 準的 HTML 代碼,從而傳遞給用戶瀏覽器,多個讀取過程大大下降了用戶的訪問速度。 而靜態網頁不一樣,因爲網頁內容直接存取在服務器上,省去了服務器的編譯過程,用戶 訪問網頁速度很快。 5)製做和後期維護工做量不一樣。動態網頁的設計以數據庫技術爲基礎,能夠實現 多種功能,下降了網站維護的工做量。而靜態網頁因爲沒有數據庫的支持,網頁內容更 改時須要直接修改代碼,在網站內容製做和維護中,所需的工做量更大。動態網頁與靜 態網頁各有特色,網站設計師在網頁設計時,主要根據網站的功能需求和網站內容多少 選擇不一樣網頁。如,網站包含信息量太大時,就須要選擇動態網頁,反之,則選擇靜態 網頁。 379. JSP/ASP/PHP 的比較 ASP(Active Server Pages),JSP(JavaServer Pages),PHP(Hypertext Preprocessor) 是目前主流的三種動態網頁語言。 ASP 是微軟(Microsoft)所開發的一種後臺腳本語言,它的語法和 Visual BASIC 相似,能夠像 SSI(Server Side Include)那樣把後臺腳本代碼內嵌到 HTML 頁面中。 雖然 ASP 簡單易用,可是它自身存在着許多缺陷,最重要的就是安全性問題。 PHP 是一種跨平臺的服務器端的嵌入式腳本語言。它大量地借用 C,Java 和 Perl 語 言的語法, 並耦合 PHP 本身的特性,使 WEB 開發者可以快速地寫出動態產生頁面。它支 持目前絕大多數數據庫。 JSP 是一個簡化的 Servlet,它是由 Sun 公司倡導、許多公司參與一塊兒創建的一種動 態網頁技術標準。JSP 技術有點相似 ASP 技術,它是在傳統的網頁 HTML 中插入 Java 程序段和 JSP 標記(tag),從而造成 JSP 文件,後綴名爲(*.jsp)。 用 JSP 開發的 Web 應 用是跨平臺的,既能在 Linux 下運行,也能在其餘操做系統上運行。 ASP 優勢: 無需編譯、易於生成、獨立於瀏覽器、面向對象、與任何 ActiveX scripting 語言兼容、源程序碼不會外漏。 缺點: 1)Windows 自己的全部問題都會一成不變的也累加到了它的身上。安全性、穩定 性、跨平臺性都會由於與 NT 的捆綁而顯現出來。 2)ASP 因爲使用了 COM 組件因此它會變的十分強大,可是這樣的強大因爲 Windows NT 系統最初的設計問題而會引起大量的安全問題。只要在這樣的組件或是操 做中一不注意,那麼外部攻擊就能夠取得至關高的權限而致使網站癱瘓或者數據丟失。 3)還沒法徹底實現一些企業級的功能:徹底的集羣、負載均橫。 PHP 優勢: 1)一種能快速學習、跨平臺、有良好數據庫交互能力的開發語言。 2)簡單輕便,易學易用。 3 ) 與 Apache 及其它擴展庫結合緊密。 缺點: 1 ) 數據庫支持的極大變化。 2 ) 不適合應用於大型電子商務站點。 JSP 優勢: 1 ) 一處編寫隨處運行。 2 ) 系統的多臺平支持。 3 ) 強大的的可伸縮性。 4 ) 多樣化和功能強大的開發工具支持。 缺點: 1) 與 ASP 同樣,Java 的一些優點正是它致命的問題所在。 2 ) 開發速度慢 380. CGI/Servlet/JSP 的比較 CGI(Common Gateway Interface),通用網關接口,是一種根據請求信息動態產生回 應內容的技術。 經過 CGI,Web 服務器能夠將根據請求不一樣啓動不一樣的外部程序,並將請求內容轉 發給該程序,在程序執行結束後,將執行結果做爲迴應返回給客戶端。也就是說,對於 每一個請求,都要產生一個新的進程進行處理。 Servlet 是在服務器上運行的小程序。在實際運行的時候 Java Servlet 與 Web 服務 器會融爲一體。與 CGI 不一樣的是,Servlet 對每一個請求都是單獨啓動一個線程,而不是進 程。這種處理方式大幅度地下降了系統裏的進程數量,提升了系統的併發處理能力。 比較: 1) JSP 從本質上說就是 Servlet。JSP 技術產生於 Servlet 以後,二者分工協 做,Servlet 側重於解決運算和業務邏輯問題,JSP 則側重於解決展現問題。 2 ) 與 CGI 相比,Servlet 效率更高。Servlet 處於服務器進程中,它經過多線 程方式運行其 service 方法,一個實例能夠服務於多個請求,而且其實例通常不會銷燬。 而 CGI 對每一個請求都產生新的進程,服務完成後就銷燬,因此效率上低於 Servlet 。 3)與 CGI 相比,Servlet 更容易使用,功能更強大,具備更好的可移植性,更節 省投資。在將來的技術發展過程當中,Servlet 有可能完全取代 CGI。 381. HTTP 協議工做原理及其特色 超文本傳輸協議(HTTP:Hypertext Transport Protocol)是萬維網應用層的協議, 它經過兩個程序實現:一個是客戶端程序(各類瀏覽器),另外一個是服務器 (常稱 Web 服務器) 。這兩個一般運行在不一樣的主機上,經過交換報文來完成網頁請求和響應,報 文可簡單分爲請求報文和響應報文。 工做原理(流程): 客戶機與服務器創建鏈接後,瀏覽器能夠向 web 服務器發送請求並顯示收到的網頁, 當用戶在瀏覽器地址欄中輸入一個 URL 或點擊一個超鏈接時,瀏覽器就向服務器發出了 HTTP 請求,請求方式的格式爲:統一資源標識符、協議版本號,後邊是 MIME (Multipurpose Internet Mail Extensions)信息包括請求修飾符、客戶機信息和可能 的內容。該請求被送往由 URL 指定的 WEB 服務器,WEB 服務器接收到請求後,進行相 應反映,其格式爲:一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊 服務器信息、實體信息和可能的內容。即以 HTTP 規定的格式送回所要求的文件或其餘 相關信息,再由用戶計算機上的瀏覽器負責解釋和顯示。 特色: 1)支持客戶/服務器模式。 2)簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的 有 GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲 HTTP 協議簡單,使得 HTTP 服務器的程序規模小,於是通訊速度很快。 3)靈活:HTTP 容許傳輸任意類型的數據對象。正在傳輸的類型由 Content-Type 加以 標記。 4)無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求, 並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。 5)無狀態:HTTP 協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺 少狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接 傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。 382. get 和 post 的區別 1. Get 是不安全的,由於在傳輸過程,數據被放在請求的 URL 中;Post 的全部操做對用 戶來講都是不可見的。 2. Get 傳送的數據量較小,這主要是由於受 URL 長度限制;Post 傳送的數據量較大,一 般被默認爲不受限制。 3. Get 限制 Form 表單的數據集的值必須爲 ASCII 字符;而 Post 支持整個 ISO10646 字 符集。 4. Get 執行效率卻比 Post 方法好。Get 是 form 提交的默認方法。 383. 如何解決表單提交的中文亂碼問題 1)設置頁面編碼,如果 jsp 頁面,需編寫代碼 <%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %> 如果 html 頁面,在網頁頭部()中添加下面這段代碼 2)將 form 表單提交方式變爲 post 方式,即添加 method="post";)在 Servlet 類中 編寫代碼 request.setCharacterEncoding("UTF-8"),並且必須寫在第一行。 3)若是是 get 請求,在 Servlet 類中編寫代碼 byte [] bytes = str.getBytes("iso-8859-1"); String cstr = new String(bytes,"utf-8"); 或者直接修改 Tomcat 服務器配置文件 server.xml 增長內容: URIEncoding="utf-8" 384. 絕對路徑、根路徑、相對路徑的含義及其區別 絕對路徑指對站點的根目錄而言某文件的位置,相對路徑指以當前文件所處目錄而 言某文件的位置,相對路徑-以引用文件之網頁所在位置爲參考基礎,而創建出的目錄路 徑。絕對路徑-以 Web 站點根目錄爲參考基礎的目錄路徑。 先給出一個網站結構圖作實例加深理解,A 網站(域名爲 http://www.a.com): /include/a-test.html,/img/a-next.jpg;B 網站(域名爲 http://www.b.com): /include/b-test.html,/img/b-next.jpg。 相對路徑是從引用的網頁文件自己開始構建的,若是在 A 網站中的 a-test.html 中要 插入圖片 a-next.jpg,能夠這樣作: ,重點是 img 前 面的../,表示從 html 處於的 include 開始起步,輸入一個../表示回到上面一級父文件夾 下,而後再接着 img/表示又從父級文件夾下的 img 文件開始了,最後定位 img 下面的 next.jpg。 根路徑是從網站的最底層開始起,通常的網站的根目錄就是域名下對應的文件夾,就 如 D 盤是一個網站,雙擊 D 盤進入到 D 盤看到的就是網站的根目錄,這種路徑的連接 樣式是這樣的:若是在 A 網站中的 a-test.html 中要插入圖片 a-next.jpg,能夠這樣 作: ,以/開頭表示從網站根目錄算起,找到根目錄下面 的 img 文件夾下的 next.jpg。 絕對路徑就很好理解了,這種路徑通常帶有網站的域名,若是在 A 網站中的 a-test.html 中要插入圖片 a-next.jpg,須要這樣這樣寫: ,將圖片路徑上帶有了域名信息,再打個 比方:若是在 A 網站中的 a-test.html 中要插入 B 網站的圖片 b-next.jpg,就須要這樣 寫: ,這種方法適用與在不一樣網站 之間插入外部網站的圖片。 385. 如實現 servlet 的單線程模式 實現 servlet 的單線程的 jsp 命令是: <%@ page isThreadSafe=」false」%>。 默認 isThreadSafe 值爲 true。 屬性isThreadSafe=false模式表示它是以Singleton模式運行,該模式implements 了接口 SingleThreadMode, 該模式同一時刻只有一個實例,不會出現信息同步與否的 概念。若多個用戶同時訪問一個這種模式的頁面,那麼先訪問者徹底執行完該頁面後, 後訪問者纔開始執行。 屬性 isThreadSafe=true 模式表示它以多線程方式運行。該模式的信息同步,需訪 問同步方法(用 synchronized 標記的)來實現。 通常格式以下: public synchronized void syncmethod(...){ while(...) { this.wait(); } this.notifyAll(); } 386. Servlet 的生命週期 一、加載:在下列時刻加載 Servlet:(1)若是已配置自動加載選項,則在啓動服務器時 自動 二、加載 (web.xml 中設置 );(2)在服務器啓動後,客戶機首次 向 Servlet 發出請求時;(3)從新加載 Servlet 時(只執行一次) 三、實例化:加載 Servlet 後,服務器建立一個 Servlet 實例。(只執行一次) 四、初始化:調用 Servlet 的 init() 方法。在初始化階段,Servlet 初始化參數被傳遞給 Servlet 配置對象 ServletConfig。 (只執行一次) 五、請求處理:對於到達服務器的客戶機請求,服務器建立針對這次請求的一個「請求」 對象和一個「響應」對象。服務器調用 Servlet 的 service() 方法,該方法用於傳遞「請 求」和「響應」對象。service() 方法從「請求」對象得到請求信息、處理該請求並用「響 應」對象的方法以將響應傳回客戶機。service() 方法能夠調用其它方法來處理請求,例 如 doGet()、doPost() 或其它的方法。(每次請求都執行該步驟) 六、銷燬:當服務器再也不須要 Servlet, 或從新裝入 Servlet 的新實例時,服務器會調用 Servlet 的 destroy() 方法。(只執行一次) 387. 轉發和重定向的區別 轉發是在服務端直接作的事情,是對客戶端的同一個 request 進行傳遞,瀏覽器並不知 道。重定向是由瀏覽器來作的事情。重定向時,服務端返回一個 response,裏面包含了 跳轉的地址,由瀏覽器得到後,自動發送一個新 request。轉發像呼叫轉移或者 110 報 警中心,重定向似 114 查號臺。 a) 區別 1:跳轉效率的不一樣 轉發效率相對高;重定向效率相對低 b) 區別 2:實現語句不一樣 轉發 request.getRequestDispatcher("xxxx").forward(request,response) ; 重定向 response.sendRedirect("xxxx") c) 區別 3:是否共有同一個 request 的數據 轉發源組件與目標組件共有同一個 request 數據 重定向源組件與目標組件不共有同一個 request 數據(可以使用 session 共有數據) d) 區別 4:瀏覽器 URL 地址的不一樣 轉發後瀏覽器 URL 地址保持不變(源組件地址) 重定向後瀏覽器 URL 地址改變爲重定向後的地址(目標組件地址) e) 區別 5:"/"路徑的含義不一樣 轉發時"/"表明當前項目的根路徑 ;重定向時"/"表明當前服務器的根路徑 f) 區別 6:跳轉範圍的不一樣 只能轉發到同一應用中的 URL(默認) ;能夠重定向任何服務器、任何應用的 URL g) 區別 7:刷新是否致使重複提交 轉發會致使重複提交(能夠經過同步令牌解決);重定向不會致使重複提交 h) 區別 8:是否通過過濾器 轉發不通過過濾器(默認狀況);重定向通過過濾器 388. JSP 的執行過程 在 JSP 運行過程當中,首先由客戶端發出請求,Web 服務器接收到請求後,若是是第一次 訪問某個 jsp 頁面,Web 服務器對它進行如下 3 個操做。 1) 翻譯:由.jsp 變爲.java,由 JSP 引擎實現。 2) 編譯:由.java 變爲.class,由 Java 編譯器實現。 3) 執行:由.class 變爲.html,用 Java 虛擬機執行編譯文件,而後將執行結果返回給 Web 服務器,並最終返回給客戶端 若是不是第一次訪問某個 JSP 頁面,則只執行第三步。因此第一次訪問 JSP 較慢。 389. JSP 動做有哪些,簡述做用? jsp:include:在頁面被請求的時候引入一個文件。 jsp:useBean:尋找或者實例化一個 JavaBean。 jsp:setProperty:設置 JavaBean 的屬 性。 jsp:getProperty:輸出某個 JavaBean 的屬性。 jsp:forward:把請求轉到一個新的頁面。 jsp:plugin:根據瀏覽器類型爲 Java 插件生 成 OBJECT 或 EMBED 標記。 390. page/request/session/application 做用域區別 page:當前頁面範圍 request:當前頁面範圍+轉發頁面(forward)+包含頁面(include) session:當前會話:session 在如下幾種狀況下失效 1) 銷燬 session:Session.invalidate(); 2) 超過最大非活動間隔時間 3) 手動關閉瀏覽器(session 並無馬上失效,由於服務器端 session 仍舊存在,超過 最大非活動間隔時間後真正失效) application:當前應用;服務器從新啓動前一直有效 391. JSP 和 Servlet 的區別和聯繫 區別: 1) JSP 是在 HTML 代碼裏寫 JAVA 代碼,框架是 HTML;而 Servlet 是在 JAVA 代碼中寫 HTML 代碼,自己是個 JAVA 類。 2) JSP 令人們把顯示和邏輯分隔成爲可能,這意味着二者的開發可並行進行;而 Servlet 並無把二者分開。 3) Servlet 獨立地處理靜態表示邏輯與動態業務邏輯.這樣,任何文件的變更都須要對此 服務程序從新編譯;JSP 容許用特殊標籤直接嵌入到 HTML 頁面, HTML 內容與 JAVA 內容也可放在單獨文件中,HTML 內容的任何變更會自動編譯裝入到服務程序. 4) Servlet 須要在 web.xml 中配置,而 JSP 無需配置。 5) 目前 JSP 主要用在視圖層,負責顯示,而 Servlet 主要用在控制層,負責調度 聯繫: 1) 都是 Sun 公司推出的動態網頁技術。 2) 先有 Servlet,針對 Servlet 缺點推出 JSP。JSP 是 Servlet 的一種特殊形式,每一個 JSP 頁面就是一個 Servlet 實例——JSP 頁面由系統翻譯成 Servlet,Servlet 再負責響應 用戶請求。 392. 談談過濾器原理及其做用? 原理: l 過濾器是運行在服務器端的一個攔截做用的 web 組件,一個請求來到時,web 容器 會判斷是否有過濾器與該信息資源相關聯,若是有則交給過濾器處理,而後再交給目 標資源,響應的時候則以相反的順序交給過濾器處理,最後再返回給用戶瀏覽器 l 通常用於日誌記錄、性能、安全、權限管理等公共模塊。 過濾器開發: l 過濾器是一個實現了 javax.servlet.Filter 接口的 java 類 l 主要業務代碼放在 doFilter 方法中 l 業務代碼完成後要將請求向後傳遞,即調用 FilterChain 對象的 doFilter 方法 配置: 在web.xml中增長以下代碼 MyFilter Filter完整類名 MyFilter /*(要過慮的url,此處*表示過慮全部的 url) 談談監聽器做用及其分類? 監聽器也叫 Listener,是一個實現特定接口的 java 類,使用時須要在 web.xml 中配置, 它是 web 服務器端的一個組件,它們用於監聽的事件源分別爲 SerlvetConext,HttpSession 和 ServletRequest 這三個域對象 主要有如下三種操做: – 監聽三個域對象建立和銷燬的事件監聽器 – 監聽域對象中屬性的增長和刪除的事件監聽器 – 監聽綁定到 HttpSession 域中的某個對象的狀態的時間監聽器 接口分類: – ServletContextListener – HttpSessionListener – ServletRequestListener – ServletContextAttributeListener – HttpSessionAttributeListener – ServletRequestAttributeListener – HttpSessionBindingListener(不須要配置) – HttpSessionActivationListener(不須要配置) 配置: 實現以上任意接口的 java 類全名 393. jQuery 相比 JavaScript 的優點在哪裏 jQuery 的語法更加簡單。 jQuery 消除了 JavaScript 跨平臺兼容問題。 相比其餘 JavaScript 和 JavaScript 庫,jQuery 更容易使用。 jQuery 有一個龐大的庫/函數。 jQuery 有良好的文檔和幫助手冊。 jQuery 支持 AJAX 394. DOM 對象和 jQuery 對象的區別及其轉換 DOM 對象,是咱們用傳統的方法(javascript)得到的對象,jQuery 對象便是用 jQuery 類庫的選擇器得到的對象,它是對 DOM 對象的一種封裝,jQuery 對象不能使用 DOM 對象的方法,只能使用 jQuery 對象本身的方法。 普通的 dom 對象通常能夠經過$()轉換成 jquery 對象 如:var cr=document.getElementById("cr"); //dom 對象 var $cr = $(cr); //轉換成 jquery 對象 因爲 jquery 對象自己是一個集合。因此若是 jquery 對象要轉換爲 dom 對象則必須取出 其中的某一項,通常可經過索引取出 如:$("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]這幾種語法在 jQuery 中都是合法的 395. jQuery 中$的做用主要有哪些 1) $用做選擇器 例如:根據 id 得到頁面元素$("#元素 ID") 2) $至關於 window.onload 和 $(document).ready(...) 例如:$(function(){...}); function(){...}會在 DOM 樹加載完畢以後執行。 3) $用做 JQuery 的工具函數的前綴 例如: var str = ' Welcome to shanghai.com '; str = $.trim(str);去掉空格 4) $(element):把 DOM 節點轉化成 jQuery 節點 例如:var cr=document.getElementById("cr"); //dom 對象 var $cr = $(cr); //轉換成 jquery 對象 5)$(html):使用 HTML 字符串建立 jQuery 節點 例如:var obj = $("
        尚學堂,實戰化教學第一品牌
        ") 396. Ajax 含義及其主要技術 Ajax (Asynchronous JavaScript and XML 阿賈克斯)不是一個新的技術,事實上,它 是一些舊有的成熟的技術以一種全新的更增強大的方式整合在一塊兒。 Ajax 的關鍵技術: 1) 使用 CSS 構建用戶界面樣式,負責頁面排版和美工 2) 使用 DOM 進行動態顯示和交互,對頁面進行局部修改 3) 使用 XMLHttpRequest 異步獲取數據 4) 使用 JavaScript 將全部元素綁定在一塊兒 397. Ajax 的工做原理 Ajax 的原理簡單來講經過 XmlHttpRequest 對象來向服務器發異步請求,從服務器得到 數據,而後用 javascript 來操做 DOM 而更新頁面。這其中最關鍵的一步就是從服務器 得到請求數據。要清楚這個過程和原理,咱們必須對 XMLHttpRequest 有所瞭解。 XMLHttpRequest 是 ajax 的核心機制,它是在 IE5 中首先引入的,是一種支持異步請求 的技術。簡單的說,也就是 javascript 能夠及時向服務器提出請求和處理響應,而不阻 塞用戶。達到無刷新的效果。 398. JSON 及其做用 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,採用徹底獨立於語 言的文本格式,是理想的數據交換格式。同時,JSON 是 JavaScript 原生格式,這意味 着在 JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。 在 JSON 中,有兩種結構:對象和數組。 Ø {} 對象 Ø [] 數組 Ø , 分隔屬性 Ø : 左邊爲屬性名,右邊爲屬性值 屬性名可用可不用引號括起,屬性值爲字符串必定要用引號括起 舉例: varo={ "xlid": "cxh", "xldigitid": 123456, "topscore": 2000, "topplaytime": "2009-08-20" }; jsonranklist=[ { "xlid": "cxh", "xldigitid": 123456, "topscore": 2000, "topplaytime": "2009-08-20" }, { "xlid": "zd", "xldigitid": 123456, "topscore": 1500, "topplaytime": "2009-11-20" } ]; 399. 文件上傳組件 Common-fileUpload 的經常使用類及其做用? DiskFileItemFactory:磁盤文件工廠類,設置上傳文件保存的磁盤目錄,緩衝區大小。 ServletFileUpload:上傳處理類,此類真正讀取客戶上傳的文件,同時能夠設置最大接 收大小。 FileItem:上傳的文件對象,能夠是多個文件,每一個上傳的文件都是一個單獨的 FileItem 對象。 400. 說出 Servlet 的生命週期,並說出 Servlet 和 CGI 的區別? 答:Web 容器加載 Servlet 並將其實例化後,Servlet 生命週期開始,容器運行其 init() 方法進行 Servlet 的初始化;請求到達時調用 Servlet 的 service 方法,service 方法會 調用與請求對應的 doGet 或 doPost 等方法;當服務器關閉會項目被卸載時服務器會將 Servlet 實例銷燬,此時會調用 Servlet 的 destroy 方法。Servlet 與 CGI 的區別在於 Servlet 處於服務器進程中,它經過多線程方式運行其 service 方法,一個實例能夠服務 於多個請求,而且其實例通常不會銷燬,而 CGI 對每一個請求都產生新的進程,服務完成 後就銷燬,因此效率上低於 Servlet。 【補充 1】SUN 公司在 1996 年發佈 Servlet 技術就是爲了和 CGI 進行競爭,Servlet 是一個特殊的 Java 程序,一個基於 Java 的 Web 應用一般包含一個或多個 Servlet 類。 Servlet 不可以自行建立並執行,它是在 Servlet 容器中運行的,容器將用戶的請求傳遞 給 Servlet 程序,此外將 Servlet 的響應回傳給用戶。一般一個 Servlet 會關聯一個或多 個 JSP 頁面。之前 CGI 常常由於性能開銷上的問題被詬病,然而 Fast CGI 早就已經解決 了 CGI 效率上的問題,因此面試的時候大可沒必要詬病 CGI,騰訊的網站就使用了 CGI 技 術,相信你也沒感受它哪裏很差。 【補充 2】Servlet 接口定義了 5 個方法,其中前三個方法與 Servlet 生命週期相關: void init(ServletConfig config) throws ServletException void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException void destory() java.lang.String getServletInfo() ServletConfig getServletConfig() 401. JSP 和 Servlet 有有什麼關係? 答:其實這個問題在上面已經闡述過了,Servlet 是一個特殊的 Java 程序,它運行於服 務器的 JVM 中,可以依靠服務器的支持向瀏覽器提供顯示內容。JSP 本質上是 Servlet 的一種簡易形式, JSP 會被服務器處理成一個相似於 Servlet 的 Java 程序,能夠簡化頁 面內容的生成。Servlet 和 JSP 最主要的不一樣點在於,Servlet 的應用邏輯是在 Java 文 件中,而且徹底從表示層中的 HTML 分離開來。而 JSP 的狀況是 Java 和 HTML 能夠組 合成一個擴展名爲.jsp 的文件(有人說,Servlet 就是在 Java 中寫 HTML,而 JSP 就是 在 HTML 中寫 Java 代碼,固然,這個說法仍是很片面的)。JSP 側重於視圖,Servlet 更側重於控制邏輯,在 MVC 架構模式中,JSP 適合充當視圖(view)而 Servlet 適合充 當控制器(controller)。 402. JSP 中的四種做用域? 答:page、request、session 和 application,具體以下: ①page 表明與一個頁面相關的對象和屬性。 ②request 表明與 Web 客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越 多個頁面,涉及多個 Web 組件;須要在頁面顯示的臨時數據能夠置於此做用域 ③session 表明與某個用戶與服務器創建的一次會話相關的對象和屬性。跟某個用戶相關 的數據應該放在用戶本身的 session 中 ④application 表明與整個 Web 應用程序相關的對象和屬性,它實質上是跨越整個 Web 應用程序,包括多個頁面、請求和會話的一個全局做用域。 403. 如何實現 JSP 或 Servlet 的單線程模式? <%@page isThreadSafe=」false」%> 【補充】Servlet 默認的工做模式是單實例多線程,若是 Servlet 實現了標識接口 SingleThreadModel 又或是 JSP 頁面經過 page 指令設置 isThreadSafe 屬性爲 false, 那麼它們生成的 Java 代碼會以單線程多實例方式工做。顯然,這樣作會致使每一個請求創 建一個 Servlet 實例,這種實踐將致使嚴重的性能問題。 404. 實現會話跟蹤的技術有哪些? 答:因爲 HTTP 協議自己是無狀態的,服務器爲了區分不一樣的用戶,就須要對用戶會話 進行跟蹤,簡單的說就是爲用戶進行登記,爲用戶分配惟一的 ID,下一次用戶在請求中 包含此 ID,服務器據此判斷究竟是哪個用戶。 ①URL 重寫:在 URL 中添加用戶會話的信息做爲請求的參數,或者將惟一的會話 ID 添 加到 URL 結尾以標識一個會話。 ②設置表單隱藏域:將和會話跟蹤相關的字段添加到隱式表單域中,這些信息不會在瀏 覽器中顯示可是提交表單時會提交給服務器。 這兩種方式很難處理跨越多個頁面的信息傳遞,由於若是每次都要修改 URL 或在頁面中 添加隱式表單域來存儲用戶會話相關信息,事情將變得很是麻煩。 ③cookie:cookie 有兩種,一種是基於窗口的,瀏覽器窗口關閉後,cookie 就沒有了; 另外一種是將信息存儲在一個臨時文件中,並設置存在的時間。當用戶經過瀏覽器和服務 器創建一次會話後,會話 ID 就會隨響應信息返回存儲在基於窗口的 cookie 中,那就意 味着只要瀏覽器沒有關閉,會話沒有超時,下一次請求時這個會話 ID 又會提交給服務器 讓服務器識別用戶身份。會話中能夠爲用戶保存信息。會話對象是在服務器內存中的, 而基於窗口的 cookie 是在客戶端內存中的。若是瀏覽器禁用了 cookie,那麼就須要通 過下面兩種方式進行會話跟蹤。固然,在使用 cookie 時要注意幾點:首先不要在 cookie 中存放敏感信息;其次 cookie 存儲的數據量有限(4k),不能將過多的內容存儲 cookie 中;再者瀏覽器一般只容許一個站點最多存放 20 個 cookie。固然,和用戶會話相關的 其餘信息(除了會話 ID)也能夠存在 cookie 方便進行會話跟蹤。 ④HttpSession:在全部會話跟蹤技術中,HttpSession 對象是最強大也是功能最多的。 當一個用戶第一次訪問某個網站時會自動建立 HttpSession,每一個用戶能夠訪問他本身 的 HttpSession。能夠經過 HttpServletRequest 對象的 getSession 方法得到 HttpSession,經過 HttpSession 的 setAttribute 方法能夠將一個值放在 HttpSession 中,經過調用 HttpSession 對象的 getAttribute 方法,同時傳入屬性名就能夠獲取保存 在 HttpSession 中的對象。與上面三種方式不一樣的是,HttpSession 放在服務器的內存 中,所以不要將過大的對象放在裏面,即便目前的 Servlet 容器能夠在內存將滿時將 HttpSession 中的對象移到其餘存儲設備中,可是這樣勢必影響性能。添加到 HttpSession 中的值能夠是任意 Java 對象,這個對象最好實現了 Serializable 接口,這 樣 Servlet 容器在必要的時候能夠將其序列化到文件中,不然在序列化時就會出現異常。 405. 過濾器有哪些做用和用法? 答: Java Web 開發中的過濾器(filter)是從 Servlet 2.3 規範開始增長的功能,並在 Servlet 2.4 規範中獲得加強。對 Web 應用來講,過濾器是一個駐留在服務器端的 Web 組件,它能夠截取客戶端和服務器之間的請求與響應信息,並對這些信息進行過濾。當 Web 容器接受到一個對資源的請求時,它將判斷是否有過濾器與這個資源相關聯。若是 有,那麼容器將把請求交給過濾器進行處理。在過濾器中,你能夠改變請求的內容,或 者從新設置請求的報頭信息,而後再將請求發送給目標資源。當目標資源對請求做出響 應時候,容器一樣會將響應先轉發給過濾器,再過濾器中,你能夠對響應的內容進行轉 換,而後再將響應發送到客戶端。 常見的過濾器用途主要包括:對用戶請求進行統一認證、對用戶的訪問請求進行記錄和 審覈、對用戶發送的數據進行過濾或替換、轉換圖象格式、對響應內容進行壓縮以減小 傳輸量、對請求或響應進行加解密處理、觸發資源訪問事件、對 XML 的輸出應用 XSLT 等。 和過濾器相關的接口主要有:Filter、FilterConfig、FilterChain 406. 監聽器有哪些做用和用法? 答:Java Web 開發中的監聽器(listener)就是 application、session、request 三個 對象建立、銷燬或者往其中添加修改刪除屬性時自動執行代碼的功能組件,以下所示: ①ServletContextListener:對 Servlet 上下文的建立和銷燬進行監聽。 ②ServletContextAttributeListener:監聽 Servlet 上下文屬性的添加、刪除和替換。 ③HttpSessionListener:對 Session 的建立和銷燬進行監聽。 補充:session 的銷燬有兩種狀況:1session 超時(能夠在 web.xml 中經過 / 標籤配置超時時間);2 經過調用 session 對象 的 invalidate()方法使 session 失效。 ④HttpSessionAttributeListener:對 Session 對象中屬性的添加、刪除和替換進行監 聽。 ⑤ServletRequestListener:對請求對象的初始化和銷燬進行監聽。 ⑥ServletRequestAttributeListener:對請求對象屬性的添加、刪除和替換進行監聽。 407. 你的項目中使用過哪些 JSTL 標籤? 答:項目中主要使用了 JSTL 的核心標籤庫,包括 等,主要用於構造循環和分支結構以控制顯示邏輯。 【說明】雖然 JSTL 標籤庫提供了 core、sql、fmt、xml 等標籤庫,可是實際開發中建議 只使用核心標籤庫(core),並且最好只使用分支和循環標籤並輔以表達式語言(EL), 這樣才能真正作到數據顯示和業務邏輯的分離,這纔是最佳實踐。 408. 使用標籤庫有什麼好處?如何自定義 JSP 標籤? 答:使用標籤庫的好處包括如下幾個方面: 分離 JSP 頁面的內容和邏輯,簡化了 Web 開發; 開發者能夠建立自定義標籤來封裝業務邏輯和顯示邏輯; 標籤具備很好的可移植性、可維護性和可重用性; 避免了對 Scriptlet(小腳本)的使用(不少公司的項目開發都不容許在 JSP 中書寫小腳 本) 自定義 JSP 標籤包括如下幾個步驟: 編寫一個 Java 類實現實現 Tag/BodyTag/IterationTag 接口(一般不直接實現這些接口而 是繼承 TagSupport/BodyTagSupport/SimpleTagSupport 類,這是對適配器模式中缺 省適配模式的應用) 重寫 doStartTag()、doEndTag()等方法,定義標籤要完成的功能 編寫擴展名爲 tld 的標籤描述文件對自定義標籤進行部署,tld 文件一般放在 WEB-INF 文件夾或其子目錄 在 JSP 頁面中使用 taglib 指令引用該標籤庫 標籤庫描述文件(該文件一般放在 WEB-INF 目錄或其子目錄下)

        定義標籤庫
        1.0
        MyTag

        time
        com.lovo.tags.TimeTag
        empty

        format
        false
        git

        foreColor backColor
        JSP 頁面 <%@ page pageEncoding="UTF-8"%> <%@ taglib prefix="my" uri="/WEB-INF/tld/my.tld" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getSe rverPort()+path+"/"; %> 首頁 運行結果 【注意】若是要將自定義的標籤庫發佈成 JAR 文件,須要將標籤庫描述文件(tld 文件) 放在 JAR 文件的 META-INF 目錄下,能夠 JDK 自帶的 jar 工具完成 JAR 文件的生成。 409. 表達式語言(EL)的隱式對象及其做用? 答:pageContext、initParam(訪問上下文參數)、param(訪問請求參數)、paramValues、 header(訪問請求頭)、headerValues、cookie(訪問 cookie)、applicationScope(訪 問 application 做用域)、sessionScope(訪問 session 做用域)、requestScope(訪問 request 做用域)、pageScope(訪問 page 做用域)。用法以下所示: ${pageContext.request.method} ${pageContext["request"]["method"]} ${pageContext.request["method"]} ${pageContext["request"].method} ${initParam.defaultEncoding} ${header["accept-language"]} ${headerValues["accept-language"][0]} ${cookie.jsessionid.value} ${sessionScope.loginUser.username} 【補充】表達式語言的.和[]運算做用是一致的,惟一的差異在於若是訪問的屬性名不符合 Java 標識符命名規則,例如上面的 accept-language 就不是一個有效的 Java 標識符, 那麼這時候就只能用[]運算符而不能使用.獲取它的值 410. 表達式語言(EL)支持哪些運算符? 答:除了.和[]運算符,EL 還提供了: 算術運算符:+、-、*、/或 div、%或 mod 關係運算符:==或 eq、!=或 ne、>或 gt、>=或 ge、 <或 lt、<="或" le 邏輯運算符:&&或 and、||或 or、!或 not 條件運算符:${statement? a : b}(跟 java 的條件運算符相似) empty 運算符:檢查一個值是否爲 null 或者空(數組長度爲 0 或集合中沒有元素也返回 true) 411. servlet 3 中的異步處理指的是什麼? 答:在 中引入了一項新的技術可讓 異步處理請求。有人可能會質疑, 既然都有多線程了,還須要異步處理請求嗎?答案是確定的,由於若是一個任務處理時 間至關長,那麼 或 filter 會一直佔用着請求處理線程直到任務結束,隨着併發用 戶的增長,容器將會遭遇線程超出的風險,這這種狀況下不少的請求將會被堆積起來而 後續的請求可能會遭遇拒絕服務,直到有資源能夠處理請求爲止。異步特性能夠幫助應 用節省容器中的線程,特別適合執行時間長並且用戶須要獲得結果的任務,若是用戶不 須要獲得結果則直接將一個 runnable 對象交給 executor(若是不清楚請查看前文關於 多線程和線程池的部分)並當即返回便可。 【補充】多線程在 誕生初期無疑是一個亮點,而 單實例多線程的工做方式 也曾爲其贏得美名,然而技術的發展每每會顛覆咱們不少的認知,就如同當年愛因斯坦 的相對論顛覆了牛頓的經典力學通常。事實上,異步處理毫不是 serlvet 獨創,若是你 瞭解 node.js 的話,對 的這個重要改進就不覺得奇了。 412. 如何在基於 的 web 項目中實現文件上傳和下載? 答:(稍後呈現,我準備用 html5 寫一個帶進度條的客戶端,而後再用 提供 的文件上傳支持來作一個多文件上傳的例子) 413. 簡述值棧(value-stack)的原理和生命週期 答: value-stack 貫穿整個 action 的生命週期,保存在 request 做用域中,因此它和 的生命週期同樣。當 struts 2 接受一個請求時,會建立 actioncontext、 和 對象,而後把 存放進 value-stack,因此 的實例 變量能夠經過 ognl 訪問。因爲 是多實例的,和使用單例的 不一樣, 每 個 都有一個對應的 value-stack,value-stack 存放的數據類型是該 的實 例,以及該 中的實例變量,action 對象默認保存在棧頂。 414. 闡述 session 加載實體對象的過程。 答:session 加載實體對象的步驟是: ① 在調用數據庫查詢功能以前, 首先會在緩存中進行查詢, 在一級緩存中, 通 過實體類型和主鍵進行查找, 若是一級緩存查找命中且數據狀態合法, 則直接返回 ③ 若是一級緩存沒有命中, 接下來 會在當前 nonexists 記錄(至關於一個查詢 黑名單, 若是出現重複的無效查詢能夠迅速判斷, 從而提高性能)中進行查找, 若是 中存在一樣的查詢條件,則返回 對於 load 方法, 若是一級緩存查詢失敗則查詢二級緩存, 若是二級緩存命中則直接 返回 ④ 若是以前的查詢都未命中, 則發出 sql 語句, 若是查詢未發現對應記錄則將這次查詢 添加到 中加以記錄, 並返回 ⑤ 根據映射配置和 語句獲得 resultset,並建立對應的實體對象 ⑥ 將對象歸入 session(一級緩存)管理 ⑦ 執行攔截器的 onload 方法(若是有對應的攔截器) ⑧ 將數據對象歸入二級緩存 ⑨ 返回數據對象 415. 怎麼防止重複提交 1.禁掉提交按鈕。表單提交後使用 javascript 使提交按鈕 disable。這種方法防止心急的 用戶屢次點擊按鈕。但有個問題,若是客戶端把 給禁止掉,這種方法就無效 了。 2.post redirect get 模式。在提交後執行頁面重定向,這就是所謂的 post-redirect-get (prg)模式。簡言之,當用戶提交了表單後,你去執行一個客戶端的 重定向,轉到提交成功信息頁面。 這能避免用戶按 f5 致使的重複提交,而其也不會出現瀏覽器表單重複提交的警告,也能 消除按瀏覽器前進和後退按致使的一樣問題。 3.在 中存放一個特殊標誌。當表單頁面被請求時,生成一個特殊的字符標誌串, 存在 中,同時放在表單的隱藏域裏。接受處理表單數據時,檢查標識字串是否 存在,並當即從 中刪除它,而後正常處理數據。 若是發現表單提交裏沒有有效的標誌串,這說明表單已經被提交過了,忽略此次提交。 4.在數據庫裏添加約束。在數據庫裏添加惟一約束或建立惟一索引,防止出現重複數據。 這是最有效的防止重複提交數據的方法。 416. $(document).ready(function(){}) jquery(document).ready(function(){}); 有什麼區別? window.jquery="window.$" = jquery; 這二者能夠互換使用。通常建議優先使用$ 417. 寫出輸出結果 請寫出如下輸出結果: foo.getname(); getname(); 4 foo().getname(); 1 new 418. 項目從瀏覽器發起交易響應緩慢,請簡述從哪些方面如數分析 從前端後端分別取考慮,後臺是否是數據庫死鎖等。 前臺看看是否是 js 錯誤,或者圖片過大,dom 渲染 dom 樹,畫面優化。cmd amd 規 範等
        1. 1-9 ↩︎web

    相關文章
    相關標籤/搜索