1. 程式人生 > >Java面試題集(四)

Java面試題集(四)

clu error col edi servlet對象 動態 解決方法 原來 highlight

二. Java Web基礎部分

在js中如何創建一個對象?

var p1={name:”tom”,”age”:12};

function Person(name,age){

   this.name=name;

   this.age=age;

}

var p2=new Person(“jack”,14);

在js中如何得到對象的屬性?

Var age=p2.age;

age=p1[“age”];

Alert(age);

$(document).ready()方法和window.onload()方法的區別?

1.window.onload()方法是在網頁中所有的元素完全加載到瀏覽器後才執行的。

2.$(document).ready()方法可以在dom載入就緒時就對其進行操作,並調用執行綁定的函數。

Xml有哪些解析方式?區別是什麽?項目中用到了xml技術的哪些方面?如何實現的?

1.DOM方式:一次性將整個文檔加載到內存中,生成一個對象樹,在處理大型文件時其性能下降的非常厲害。

2.SAX:基於事件驅動的方法回調機制。每讀取一小部分數據時就會回調事件處理器對象的方法,但解析一旦開始就不能停止。

實際運用:用到了數據存貯,信息配置兩方面。在做數據交換平臺時,將不能數據源的數據組裝成XML文件,然後將XML文件壓縮打包加密後通過網絡傳送給接收者,接收解密與解壓縮後再同XML文件中還原相關信息進行處理。在做軟件配置時,利用XML可以很方便的進行,軟件的各種配置參數都存貯在XML文件中。

Servlet的生命周期?

1.初始化階段調用init()方法。

2.響應客戶端請求階段調用service()方法即doGet()和doPost()方法

3.終止階段調用destory()方法。

http請求的轉發(forward)和重定向(redirect)的區別?

1.地址欄:轉發顯示的是請求的url而重定向顯示的不是請求的url,是指向新的url。

2.瀏覽器發送請求次數:轉發瀏覽器發送了一次請求,而重定向瀏覽器發生了2次請求。

3.是否可以進行request數據共享:轉發2個資源之間是同一個request對象,可以共享request中數據,而重定向2個資源之間不是同一個request對象,不可以共享。

補充:forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址;

redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request參數都可以獲取。

Http中請求的get和post方式的區別?

Get用於信息獲取,而post用於更新信息,

get請求用來從服務器上獲得資源,而post是用來向服務器提交數據;

數據查詢時用Get方式,而數據添加、修改或刪除時用Post方式;

1.攜帶請求參數的方式

Get:通過請求行攜帶參數,參數顯示在地址欄

Post:通過請求體攜帶參數,參數不會顯示在地址欄

2.服務器端處理請求的方法

Get:會調用servlet的doGet()來處理請求

Post:會調用servlet的doPost()來處理請求

3.數據大小和安全性

Get:大小有顯示,不安全

Post:大小沒顯示,安全

JSP有哪些內置對象?作用分別是什麽?

jsp一共有9個內置對象:

Request:用戶端請求,此請求會包含來自get/post請求的參數

Reponse:網頁傳回用戶端的回應

Session:與請求有關的會話期,Session可以存貯用戶的狀態信息

Application: 與當前應用對應的ServletContext對象,應用中只有一個

pageContext:網頁的屬性在這裏管理

Out:用來傳送回應的輸出{}<%=%>

Page:jsp對應的servlet對象

Exception:針對錯誤網頁,未捕捉的異常對象

Config:與jsp對象

jsp中動態include與靜態include的區別?

1.動態包含:用<jsp:include file=”optimal.jsp”>包含動作是在jsp對應的servlet處理請求時去執行,每請求一次執行一次。

2.靜態包含:<%@include file=”optimal.jsp”>包含動作在jsp被編譯成java文件時執行,只有第一次請求時執行。

註意:在日常開發中會出現這樣錯誤:

The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

則該錯誤是jsp文件過大編譯失敗。解決方法是動態引入jsp文件,拆分jsp文件

JSP和Servlet有哪些相同點和不同點,他們之間的聯系是什麽?

JSP是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯後是"類servlet"。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML裏分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

我們在web應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?

 Public String translate (String str) {

   String tempStr = "";

   try {

     tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");

     tempStr = tempStr.trim();

   }

   catch (Exception e) {

     System.err.println(e.getMessage());

   }

   return tempStr;

 }

Jquery使用好處?為什麽使用jquery?

1.輕量級:jquery是輕量級的JavaScript框架.

2:強大的選擇器:JQuery不僅支持CSS裏的所有選擇器,還有JQuery獨有的選擇器.

3:出色的DOM操作封裝:JQuery封裝了大量常用的DOM操作。

4.兼容性好:JQuery能夠在不同瀏覽器中兼容,同時還修復了一些瀏覽器之間的差異.

5.可靠的事件處理機制

6.完善的ajax封裝

7.鏈式操作方式,隱式叠代

8.支持豐富的插件

Ajax發送請求過程?優缺點?應用場景?

$.ajax({  
     url : "user/login.do",  
     type : "post",  
     data : {  
         mobile : $("#mobile").val(),  
         password : $("#password").val()  
     },  
     dataType : "json",  
     success : function (data) {  
         $("#login").text(JSON.stringify(data));//這裏進行了將字符串封裝成json對象形式  
     },  
     error:function(data){  
         //返回數據失敗提示  
     }  
});   

優點:

1.最大的一點是頁面無刷新,給用戶體驗非常好。

2.使用異步方式與服務器通信,不需要打斷用戶操作,具有更加迅速的響應能力

3.Ajax的原則是“按需取數據,最大程度的減少冗余請求,減少服務器的負荷”。

缺點:

1.破壞瀏覽器後退按鈕的正常行為,在動態更新頁面後,用戶無法回到前一個頁面的狀態。

2.使用JavaScript作ajax引擎,JavaScript的兼容性和debug本身讓人頭疼。

應用場景:

1.文本輸入提示的場景

2.對數據進行聯動過濾場景。

Java面試題集(四)