㈠ 一般java面試都會問些什麼問題
在回答之前建議你去蛙 課上看看,有很多Java面試時會考到的技術視頻教程,而且每周都會更新一個一線大廠的技術。
1.hashmap0.75是什麼?構造函數怎麼傳?線程安全么,不安全會導致什麼問題?
2.arraylist和linkedlist區別,arraylist構造函數有什麼用,不傳入會導致什麼問題?同時還是問線程安全么?
3.collections下面的同步方法和concurrent包下的有什麼區別?
4.創建線程的三種方式和區別,線程池的構造函數,給定n核cpu,io密集怎麼創建線程池,cpu密集怎麼創建線程池?
5.jvm有哪些區?cms gc原理,逃逸分析和標量替換是什麼?做過哪些調優,用了什麼參數?解決過什麼內存泄露或者堆棧溢出問題么?用什麼工具或者手段監控並解決?
6.spring restcontroller和controller區別是什麼?autowired和resource 區別是什麼?beanfactory和factorybean區別是什麼?
7.mybaties的#{}和${}有什麼區別?同時引出preparedstatement和statement有什麼區別?
8.http怎麼開啟長連接?緩存怎麼實現?
9.描述tcp四次揮手流程和狀態
10.mysql常用優化手段,一個欄位如果只有0或1需要加索引么?如果還有另外一個欄位經常被查詢,這倆欄位做什麼索引?最左前綴原則是什麼?如何避免回表?如何實現樂觀鎖?事務隔離級別都有什麼?
11.linux最尾部活動查看實時日誌用什麼命令?如何查看進程並結束?
12.描述epoll和select原理和差距
13.git merge和rebase區別?cherry-pick是什麼?
14.你項目里寫什麼了,就會問其中實現部分的方案和設計思路,也問技術點。
㈡ java常用框架面試題
1、什麼是Spring?
Spring是個Java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平台的web應用。Spring框架目標是簡化Java企業級應用開發,並通過POJO為基礎的編程模型促進良好的編程習慣。
2、Spring框架有哪些不同的模塊?
核心容器模塊、應用上下文模塊Application context、AOP模塊、JDBC抽象和DAO模塊、O/R映射整合模塊、Web模塊、MVC框架模塊。
3、一個簡單的Spring應用程序包括什麼?
這些應用程序像任何Java應用程序。它們是由多個類組成,每個類執行應用程序內的一個特定的功能。這些類的配置是通過一個XML文件向對方導入依賴。此XML文件描述如何配置類,稱為Spring配置文件。
4、如何給Spring容器提供配置元數據?
有三種重要的方法給Spring 容器提供配置元數據:XML配置文件、基於註解的配置、基於Java的配置。
5、在Spring中如何注入一個Java集合?
Spring提供以下幾種集合的配置元素:
類型用於注入一列值,允許有相同的值。
類型用於注入一組值,不允許有相同的值。
類型用於注入一組鍵值對,鍵和值都可以為任意類型。
類型用於注入一組鍵值對,鍵和值都只能為String類型。
6、在Spring框架中如何更有效地使用JDBC?
使用Spring JDBC框架,資源管理和錯誤處理的代價都會被減輕。所以開發者只需statements和queries從數據存取數據,JDBC也可以在Spring框架提供的模板類的幫助下更有效地被使用,這個模板叫JDBC Template 。
7、如何通過HibernateDaoSupport將Spring和Hibernate結合起來?
用Spring的SessionFactory調用LocalSessionFactory。集成過程分三步:
配置the Hibernate Session Factory、繼承HibernateDaoSupport實現一個DAO、在AOP支持的事務中裝配。
8、解釋一下Spring MVC框架及其控制器
Spring配備構建Web應用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts、Spring的MVC框架用控制反轉把業務對象和控制邏輯清晰地隔離。它也允許以聲明的方式把請求參數和業務對象綁定。
控制器提供一個訪問應用程序的行為,此行為通常通過服務介面實現。控制器解析用戶輸入並將其轉換為一個由視圖呈現給用戶的模型。Spring用一個非常抽象的方式實現了一個控制層,允許用戶創建多種用途的控制器。
㈢ 面試題 java什麼叫事務,事務有什麼用
事務你可以去看來概念,自我給你說下簡單理解。你去斗魚送禮物,扣了你的魚丸給主播送了禮物,這倆操作必須是綁定在一起的,不然單個任何一個完成了另外一個沒完成都會出問題。對到資料庫的操作就是,你花錢,買了禮物,禮物送出去。前面兩個步驟就是一個事物,花錢買-禮物發到你庫存。然後這東西肯定要寫到庫里。這么說明白了吧,同樣送禮物這個,從你的庫存拿走,送給主播,也必須是一致的,必須一起完成。面試時候就照著這個意思大概的發揮吧。
另外,真去面試,你別張嘴就xx概念,什麼這個性,那個性,幹了幾年業務的我估計沒幾個能真記住這些,你就大致按照自己的想法和理解說說。直接背概念十個有九個會被當培訓班出來的,面試不過或者被壓工資都是尋常的事。
㈣ java基礎面試題
1.抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
2.繼承:
繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼 承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增 加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。
4. 多態性:
多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。
5、String 和StringBuffer的區別
JAVA平台提供了兩個類:String和 StringBuffer,它們可以儲存和操作字元串,即包含多個字元的字元數據。這個String類提供了數值不可改變的字元串。而這個 StringBuffer類提供的字元串進行修改。當你知道字元數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers來動態構造字元數據。
6、運行時異常與一般異常有何異同?
異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。
7、說出Servlet的生命周期,並說出Servlet和CGI的區別。
Servlet被伺服器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當伺服器決定將實例銷毀的時候調用其destroy方法。
與cgi的區別在於servlet處於伺服器進程中,它通過多線程方式運行其service方法,一個實例可以服務於多個請求,並且其實例一般不會銷毀,而CGI對每個請求都產生新的進程,服務完成後就銷毀,所以效率上低於servlet。
8、說出ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和 Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素 移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而 LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記錄本項的前後項即可,所以插入速度較快。
10、&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。
11、HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。
12、final, finally, finalize的區別。
final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。
13、sleep() 和 wait() 有什麼區別?
sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動恢復。調用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)後本線程才進入對象鎖定池准備獲得對象鎖進入運行狀態。
14、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Override和重載Overload是Java多態性的不同表現。重寫Overrid是父類與子類之間多態性的一種表現,重載 Overload是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overrid)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方 法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overload的方法是可以改變返回值的類型。
15、error和exception有什麼區別?
error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。
16、同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。
如果數據將在線程間共享。例如正在寫的數據以後可能被另一個線程讀到,或者正在讀的數據可能已經被另一個線程寫過了,那麼這些數據就是共享數據,必須進行同步存取。
當應用程序在對象上調用了一個需要花費很長時間來執行的方法,並且不希望讓程序等待方法的返回時,就應該使用非同步編程,在很多情況下採用非同步途徑往往更有效率。
17、try { }里有一個return語句,那麼緊跟在這個try後的finally { }里的code會不會被執行,什麼時候被執行,在return前還是後?
會執行,在return前執行。
18、Java中的異常處理機制的簡單原理和應用。
當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情 況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發 NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,並自由選擇在何時用 throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。
19、垃圾回收的優點和原理。並考慮2種回收機制。
Java語言中一個顯著的特點就是引入了垃圾回收機制,使C++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由於有個垃圾回收機制,Java中的對象不再有 "作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的 線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾 回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。
20、請說出你所知道的線程同步的方法。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
21、描述一下JVM載入class文件的原理機制
JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。
22、MVC的各個部分都有那些技術來實現?如何實現?
MVC是Model-View-Controller 的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。
23、List、Map、Set三個介面,存取元素時,各有什麼特點?
List以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存key-value值.
119、STRUTS的應用(如STRUTS架構)
Struts是採用Java Servlet/JavaServer Pages技術,開發Web應用程序的開放源碼的framework。 採用Struts能開發出基於MVC(Model-View-Controller)設計模式的應用構架。 Struts有如下的主要功能: 一.包含一個controller servlet,能將用戶的請求發送到相應的Action對象。 二.JSP自由tag庫,並且在controller servlet中提供關聯支持,幫助開發員創建互動式表單應用。 三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。
㈤ java上機面試題,求幫助
publicclassEncodeAndDecode{
/**
*解碼
*
*@paramstr
*要解碼的字元串
*@return解碼後的字元串
*/
publicStringencode(Stringstr)throwsStringLenException{
StringBuildersb=newStringBuilder();
if(null==str){
thrownewStringLenException("字元串末初始化!");
}
intn=str.length();
if(n<=0){
thrownewStringLenException("字元串不能為空!");
}
charc=0;
intk=0;
for(inti=0;i<n;i++){
//獲得當前字元
c=str.charAt(i);
if(c>='1'&&c<='9'&&i!=n-1){//c是1-9的數字,且i<n-1復制(k+1)次後面的一個字元
k=c-'0'+1;
for(intj=0;j<k;j++){
sb.append(str.charAt(i+1));
}
}elseif(c=='_'){//c除1-9,且為」_」轉換為」Ul」
sb.append("\UL");
}else{//其餘復制該字元
sb.append(c);
}
sb.append("_");
}
returnsb.deleteCharAt(sb.length()-1).toString();
}
/**
*解碼
*
*@paramstr
*要解碼的字元串
*@return解碼後的字元串
*/
publicStringdecode(Stringstr){
StringBuildersb=newStringBuilder();
if(null==str){
thrownewStringLenException("字元串末初始化!");
}
if(sb.length()<=0){
thrownewStringLenException("字元串不能為空!");
}
Stringstrs[]=str.split("_");
charc=0;
intk=0;
intn=strs.length;
if(n==1){
sb.append(str);
}else{
for(inti=0;i<n;i++){
k=strs[i].length();
c=strs[i].charAt(0);
if(1==k){//k==1,將該字元原樣復原
sb.append(c);
}else{//k>1,
if(strs[i].equals("\UL")){//strs[i]==」Ul」,轉換為」_」
sb.append("_");
}else{//strs[i]!=」Ul」,轉換為k(k=strs[i].length()-1)
sb.append(k-1);
}
}
}
}
returnsb.toString();
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Strings="24ab_2t2";
//Strings="04ab_2t2";
//Strings="1a0b_2t2";
//Strings="aaab_2t2";
//Strings="24ab_2335t2";
//Strings="240ab_";
/*EncodeAndDecodeencode=newEncodeAndDecode();
Strings1=encode.encode(s);
System.out.println("encode:"+s1);
Strings2=encode.decode(s1);
System.out.println("decode:"+s2);
*/
}
}
{
publicStringLenException(){
super();
}
publicStringLenException(Stringmessage){
super(message);
}
}
㈥ 求最新JAVA面試題目,越全越好!!!
這里有很多Java面經的,附答案和講解,自行下載即可:
Java資源教程專欄
㈦ JAVA面試題:3道問答題!
1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧。
2、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表。
在C++中,一個類被允許繼承多個類。但是在Java以後的語言不被允許。
這樣,如果想繼承多個類時便非常困難。所以開發方想出了新辦法:介面。
一個介面內,允許包含變數、常量等一個類所包含的基本內容。但是,介面中的函數不允許設定代碼,也就意味著不能把程序入口放到介面里。由上可以理解到,介面是專門被繼承的。介面存在的意義也是被繼承。和C++里的抽象類里的純虛函數是相同的。不能被實例化。
3.import java.util.*;
public class Test{
public static void main(String[] args){
int[] list=new int[1000000];
int i =0;
for (; i <1000000; i++) {
list[i]=i;
}
list[600000]=90000;
Set set=new HashSet();
for(i=0;i<list.length;i++)
{
if(!set.add(list[i]))
break;}
System.out.println(i);
System.out.println("the same number is "+list[i]);
}
}
㈧ Java面試題。急!
由於具體的一些參數不知道,下面配置僅供參考,照葫蘆畫瓢即可
<!-- 多對1訂單對客戶-->
<many-to-one name="custorner" class="com.xxx.Custorner" fetch="select">
<column name="cust_ID" length="32" />
</many-to-one>
<!--多對1訂單對地址-->
<many-to-one name="location" class="com.xxx.Location" fetch="select">
<column name="locat_ID" length="32" />
</many-to-one>
<!--1對多訂單對訂單明細-->
<set name="orderDetails" inverse="true">
<key>
<column name="order_Id" length="32" not-null="true" />
</key>
<one-to-many class="com.xxx.OrderDetail" />
</set>
語句:
select o.orderNum,c.custName,sum(ods.dlCount) ,l.di from order o join fetch o.orderDetails ods join fetch o.location l join fetch o.custorner c group by o.orderId
㈨ 今天遇到一公司的超難的java面試題,面掛了,求幫忙!
交流一下,有些復我也不會。制^_^
1、數據沒有排序的嗎?排序了,可以用類似二分法搞。
3、只需用ThreadLocal包裝一下這個bean的日期屬性即可,簡單。
5、有介面直接用spring HttpInvoke遠程調用即可。
6、最簡單的辦法就是使用Terracotta伺服器集群tomcat,ecache、quartz、session一站式解決。不那樣的,緩存的話,可用memcached。tomcat中的session是復制式,直接在tomcat配置文件就可以吧。如果要實現自己手動更新感覺可以考慮用jms手動傳遞數據同步。
8、處理效率高了不少,並發效率好、數據更安全。
9、簽名的演算法是公開的,但是演算法相關的密鑰是私有的。
㈩ 百度java面試題有哪些 集錦匯總java面試
1、Servlet 3中的非同步處理指的是什麼?
答:在Servlet
3中引入了一項新的技術可以讓Servlet非同步處理請求。有人可能會質疑,既然都有多線程了,還需要非同步處理請求嗎?答案是肯定的,因為如果一個任務處理時間相當長,那麼Servlet或Filter會一直佔用著請求處理線程直到任務結束,隨著並發用戶的增加,容器將會遭遇線程超出的風險,這這種情況下很多的請求將會被堆積起來而後續的請求可能會遭遇拒絕服務,直到有資源可以處理請求為止。非同步特性可以幫助應用節省容器中的線程,特別適合執行時間長而且用戶需要得到結果的任務,如果用戶不需要得到結果則直接將一個Runnable對象交給Executor並立即返回即可。
補充:多線程在Java誕生初期無疑是一個亮點,而Servlet單實例多線程的工作方式也曾為其贏得美名,然而技術的發展往往會顛覆我們很多的認知,就如同當年愛因斯坦的相對論顛覆了牛頓的經典力學一般。事實上,非同步處理絕不是Serlvet
3首創,如果你了解Node.js的話,對Servlet 3的這個重要改進就不以為奇了。
下面是一個支持非同步處理請求的Servlet的例子。
importjava.io.IOException; importjavax.servlet.AsyncContext;
importjavax.servlet.ServletException; importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {
"/async"}, asyncSupported = true)
{
= 1L; @OverridepublicvoiddoGet(HttpServletRequest req, HttpServletResponse resp)
throwsServletException, IOException { // 開啟Tomcat非同步Servlet支持req.setAttribute(
"org.apache.catalina.ASYNC_SUPPORTED", true); finalAsyncContext ctx =
req.startAsync(); // 啟動非同步處理的上下文// ctx.setTimeout(30000);ctx.start( newRunnable()
{ @Overridepublicvoidrun() { // 在此處添加非同步處理的代碼ctx.complete(); } }); } }
2、如何在基於Java的Web項目中實現文件上傳和下載?
答:在Sevlet 3 以前,Servlet
API中沒有支持上傳功能的API,因此要實現上傳功能需要引入第三方工具從POST請求中獲得上傳的附件或者通過自行處理輸入流來獲得上傳的文件,我們推薦使用Apache的commons-fileupload。
從Servlet 3開始,文件上傳變得無比簡單,相信看看下面的例子一切都清楚了。
上傳頁面index.jsp:
Select your photo and upload
${hint}
Photo file:
支持上傳的Servlet:
packagecom.jackfrued.servlet; importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.MultipartConfig;
importjavax.servlet.annotation.WebServlet; importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse; importjavax.servlet.http.Part;
@WebServlet( "/UploadServlet")
@{
= 1L; protectedvoiddoPost(HttpServletRequest request, HttpServletResponse
response) throwsServletException, IOException { //
可以用request.getPart()方法獲得名為photo的上傳附件// 也可以用request.getParts()獲得所有上傳附件(多文件上傳)//
然後通過循環分別處理每一個上傳的文件Part part = request.getPart( "photo"); if(part !=
null&& part.getSubmittedFileName().length() > 0) { //
用ServletContext對象的getRealPath()方法獲得上傳文件夾的絕對路徑String savePath =
request.getServletContext().getRealPath( "/upload"); // Servlet
3.1規范中可以用Part對象的getSubmittedFileName()方法獲得上傳的文件名//
更好的做法是為上傳的文件進行重命名(避免同名文件的相互覆蓋)part.write(savePath + "/"+
part.getSubmittedFileName()); request.setAttribute( "hint", "Upload
Successfully!"); } else{ request.setAttribute( "hint", "Upload failed!"); } //
跳轉回到上傳頁面request.getRequestDispatcher( "index.jsp").forward(request, response); }
}
3、伺服器收到用戶提交的表單數據,到底是調用Servlet的doGet()還是doPost()方法?
答:HTML的
< %--靜態包含 --%> < %--動態包含 --%> < jsp:includepage= "...">
< jsp:param name= "..."value= "..."/> < /jsp:include>
4、Servlet中如何獲取用戶提交的查詢參數或表單數據?
答:可以通過請求對象(HttpServletRequest)的getParameter()方法通過參數名獲得參數值。如果有包含多個值的參數(例如復選框),可以通過請求對象的getParameterValues()方法獲得。當然也可以通過請求對象的getParameterMap()獲得一個參數名和參數值的映射(Map)。
5、Servlet中如何獲取用戶配置的初始化參數以及伺服器上下文參數?
答:可以通過重寫Servlet介面的init(ServletConfig)方法並通過ServletConfig對象的getInitParameter()方法來獲取Servlet的初始化參數。可以通過ServletConfig對象的getServletContext()方法獲取ServletContext對象,並通過該對象的getInitParameter()方法來獲取伺服器上下文參數。當然,ServletContext對象也在處理用戶請求的方法(如doGet()方法)中通過請求對象的getServletContext()方法來獲得。