10/19測試
1. Form提交的兩種方式有什麼區別?
GET 將表單資料附加到請求頁面的URL地址後面。GET方法用來傳送少量資料, URL的長度限制在8192個字元以內。如果傳送的資料量太大,資料將被截斷,從而導致意外的處理結果。
POST 在HTTP請求中嵌入表單資料。POST方法可用來發送大量資料,而且對於使用者名稱、密碼和信用卡等機密資訊的傳送,POST方法比GET方法更安全。
2. 談談final,finally,finalize的區別?
1、final修飾符(關鍵字)。被final修飾的類,就意味著不能再派生出新的子類,不能作為父類而被子類繼承。因此一個類不能既被abstract宣告,又被final宣告。將變數或方法宣告為final,可以保證他們在使用的過程中不被修改。被宣告為final的變數必須在宣告時給出變數的初始值,而在以後的引用中只能讀取。被final宣告的方法也同樣只能使用,即不能方法重寫。
2、finally是在異常處理時提供finally塊來執行任何清除操作。不管有沒有異常被丟擲、捕獲,finally塊都會被執行。try塊中的內容是在無異常時執行到結束。catch塊中的內容,是在try塊內容發生catch所宣告的異常時,跳轉到catch塊中執行。finally塊則是無論異常是否發生,都會執行finally塊的內容,所以在程式碼邏輯中有需要無論發生什麼都必須執行的程式碼,就可以放在finally塊中。
3、finalize是方法名。java技術允許使用finalize()方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個物件沒有被引用時對這個物件呼叫的。它是在object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統資源或者被執行其他清理工作。finalize()方法是在垃圾收集器刪除物件之前對這個物件呼叫的。
3.頁面傳值的幾種方式?
1 、直接在URL請求後新增
2、jsp:param它可以實現主頁面向包含頁面傳遞引數
3、設定session和request通過顯示的把引數放置到session和request中,
以達到傳遞引數的目的session.setAttribute(name,value);
request.setAttribute(name,value)
取引數:value=(value className)session.getAttribute(name);
value=(value className)request.getAttribute(name);
4.面向物件的特點?
面向物件的程式語言有封裝、繼承 、抽象、多型等4個主要的特徵。
1封裝: 封裝是保證軟體部件具有優良的模組性的基礎,封裝的目標就是要實現軟體部件的“高內聚、低耦合”,防止程式相互依賴性而帶來的變動影響。在面向物件的程式語言中,物件是封裝的最基本單位,面向物件的封裝比傳統語言的封裝更為清晰、更為有力。面向物件的封裝就是把描述一個物件的屬性和行為的程式碼封裝在一個“模組”中,也就是一個類中,屬性用變數定義,行為用方法進行定義,方法可以直接訪問同一個物件中的屬性。通常情況下,只要記住讓變數和訪問這個變數的方法放在一起,將一個類中的成員變數全部定義成私有的,只有這個類自己的方法才可以訪問到這些成員變數,這就基本上實現物件的封裝,就很容易找出要分配到這個類上的方法了,就基本上算是會面向物件的程式設計了。把握一個原則:把對同一事物進行操作的方法和相關的方法放在同一個類中,把方法和它操作的資料放在同一個類中。
- 抽象: 抽象就是找出一些事物的相似和共性之處,然後將這些事物歸為一個類,這個類只考慮這些事物的相似和共性之處,並且會忽略與當前主題和目標無關的那些方面,將注意力集中在與當前目標有關的方面。例如,看到一隻螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。抽象包括行為抽象和狀態抽象兩個方面。例如,定義一個Person類,
如下: class Person{ String name; int age; } 人本來是很複雜的事物,有很多方面,但因為當前系統只需要瞭解人的姓名和年齡,所以上面定義的類中只包含姓名和年齡這兩個屬性,這就是一種抽像,使用抽象可以避免考慮一些與目標無關的細節。我對抽象的理解就是不要用顯微鏡去看一個事物的所有方面,這樣涉及的內容就太多了,而是要善於劃分問題的邊界,當前系統需要什麼,就只考慮什麼。
- 繼承: 在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並可以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類資料和方法的機制,這是類之間的一種關係,提高了軟體的可重用性和可擴充套件性。
4.多型: 多型是指程式中定義的引用變數所指向的具體型別和通過該引用變數發出的方法呼叫在程式設計時並不確定,而是在程式執行期間才確定,即一個引用變數倒底會指向哪個類的例項物件,該引用變數發出的方法呼叫到底是哪個類中實現的方法,必須在由程式執行期間才能決定。因為在程式執行時才確定具體的類,這樣,不用修改源程式程式碼,就可以讓引用變數繫結到各種不同的類實現上,從而導致該引用呼叫的具體方法隨之改變,即不修改程式程式碼就可以改變程式執行時所繫結的具體程式碼,讓程式可以選擇多個執行狀態,這就是多型性。多型性增強了軟體的靈活性和擴充套件性。例如,下面程式碼中的UserDao是一個介面,它定義引用變數userDao指向的例項物件由daofactory.getDao()在執行的時候返回,有時候指向的是UserJdbcDao這個實現,有時候指向的是UserHibernateDao這個實現,這樣,不用修改原始碼,就可以改變userDao指向的具體類實現,從而導致userDao.insertUser()方法呼叫的具體程式碼也隨之改變,即有時候呼叫的是UserJdbcDao的insertUser方法,有時候呼叫的是UserHibernateDao的insertUser方法: UserDao userDao = daofactory.getDao(); userDao.insertUser(user);
介面和抽象類的區別?
抽象類是用來捕捉子類的通用特性的 。它不能被例項化,只能被用作子類的超類。抽象類是被用來建立繼承層級裡子類的模板。
介面是抽象方法的集合。如果一個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。介面只是一種形式,介面自身不能做任何事情。
Session cookie application的區別?
Java與javaScript區別?
-
資料型別不同
Java的資料型別分為8種,分別是:byte、short、int、long、float、double、char以及Boolean,而JavaScript的資料型別為三種,分別為:number、string和Boolean。
除此之外,Java和Javascript變數方面也有不同。 -
二者定位不同
Java是一種完全面向物件的程式語言,想要運用Java寫東西就必須先設計物件,而JavaScript不一樣,它是基於物件的一種指令碼語言,它為開發者自帶提供了很多內部物件,要更為簡易省時。 -
聯編方式不同
Java採用靜態聯編,Java的物件引用必須在編譯時就進行,編譯器需要實現強型別檢查,而JavaScript不同,它採用動態聯編,它的物件引用可以在執行時檢查。 -
用處不一樣
它們最本質的不同就是用途,Java目前被廣泛應用於PC端、手機端、網際網路、資料中心等等,而JavaScript則被主要用於嵌入文字到HTML頁面,讀寫HTML元素,控制cookies等。
談談sql注入?
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意的)SQL命令注入到後臺資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。 [1] 比如先前的很多影視網站洩露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊.
jsp執行原理?
當客戶端瀏覽器向伺服器發出訪問一個JSP頁面的請求時,伺服器根據該請求載入相應的JSP頁面,並對該頁面進行編譯,然後執行。JSP頁面的執行過程如下圖所示:
客戶端通過瀏覽器向伺服器發出請求,在該請求中包含了請求的資源的路徑,這樣當伺服器接收到該請求後就可以知道被請求的內容。
伺服器根據接收到的客戶端的請求來載入相應的JSP檔案。
Web伺服器中的JSP引擎會將被載入的JSP檔案轉化為Servlet。
JSP引擎將生成的Servlet程式碼編譯成Class檔案。
伺服器執行這個Class檔案。
最後伺服器將執行結果傳送給瀏覽器進行顯示。
從上面的解釋中可以看到,JSP檔案被JSP引擎轉換後,又被編譯成了Class檔案,最終由伺服器通過執行這個Class檔案來對客戶端的請求進行響應。其中第三步和第四步構成了JSP處理過程中的翻譯階段,而第五步則為請求處理階段。
但並不是每次請求都需要重複進行這樣的處理。當伺服器第一次接收到對某個頁面的請求時,JSP引擎就開始按照上述的處理過程來將被請求的JSP檔案編譯成Class檔案。當再次對該頁面進行請求時,如果該頁面沒有任何改動,伺服器就會直接呼叫對應的Class檔案來執行。因此當某個JSP頁面第一次被請求時,會有一些延遲,而再次訪問時會感覺速度快了很多。如果被請求的頁面經過了修改,那麼伺服器會重新編譯這個檔案,然後再執行。
javase javaee 區別
Java SE(Java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的 Java 應用程式。Java SE 包含了支援 Java Web 服務開發的類,併為 Java Platform,Enterprise Edition(Java EE)提供基礎。
Java EE(Java Platform,Enterprise Edition)。這個版本以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的伺服器端 Java 應用程式。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、元件模型、管理和通訊 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web 2.0 應用程式。
簡單來說的話就是:
Java SE 就是做電腦上的執行軟體
Java EE 就是用來做網站的 (例如JSP、Html5、CSS3)