70個JAVA問答

21. 問:applet中如何獲得鍵盤的輸入
答:application的System.in是當(dāng)前系統(tǒng)的標(biāo)準(zhǔn)輸入,applet因為安全的原因不可能讀取當(dāng)前系統(tǒng)(客戶端)的標(biāo)準(zhǔn)輸入,只能從它的ROOT組件的事件中,比如鍵盤事件中取得鍵值.

?

22. 問:怎樣計算代碼執(zhí)行所花費的時間?
答:
代碼開始取時間,結(jié)束后取時間,相減
long t1 = System.currentTimeMillis();
///////////////// your code
long t2 = System.currentTimeMillis() ;
long time = t2-t1;

?

23. 問:如何獲在程序中獲得一個文件的ContentType?
答:
URL u = new URL("file:///aaa.txt");
URLConnection uc = u.openConnection();
String s = uc.getContentType();


24. 問:連接池的使用是建立很多連接池,還是一個連接池里用多個連接?
答:
只有在對象源不同的情況下才會發(fā)生多個池化,如果你只連一結(jié)一個數(shù)據(jù)源,永遠不要用多個連結(jié)池. 所以連結(jié)池的初始化一定要做成靜態(tài)的,而且應(yīng)該在構(gòu)造對象之前,也就是只有在類LOAD的時候,別的時候不應(yīng)該有任何生成新的連結(jié)池的時候。


25. 問:JavaMail要怎么安裝?
答:下載兩個包,一個是javamail包,另一個是jaf包。下載完直接把這兩個包不解壓加到CLASSPATH。


26. 問:怎樣把地址欄里的地址鎖定?
答:把你的服務(wù)器的可訪問目錄索引選項關(guān)閉就行了,任何服務(wù)器都有一個conf文件,里面都有這個選項。


27. 問:在JAVA中怎么取得環(huán)境變量啊。比如: TEMP = C:\TEMP ?
答:String sss = System.getProperty(key)


28. 問:怎樣實現(xiàn)四舍五入,保留小數(shù)點后兩位小數(shù)?
答:
import java.text.*;
...
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.format(numb);


29. 問:Applet和form如何通信?
答:
取得的參數(shù)傳到param里面
<%
String xxx = request.getParameter("xxx");
%>
<applet>
<param value="<%=xxx%>">
</applet>

?

30. 問:java-plug-in是什么?
答:Java Runtime Environment的插件。用來運行java程序。不需要什么特別的設(shè)置。等于你的機器里面有了jvm。


31. 問:WEB上面怎么樣連接上一個EXCEL表格?
答:
定義頁面得contentType="application/vnd.ms-excel",讓頁面以excel得形式打開。同樣也可以以word得形式打開:application/msword。


32. 問:怎樣才能避免textarea字?jǐn)?shù)限制?
答:是使用了FORM的默認(rèn)方法的緣故,如果什么也不寫默認(rèn)是GET改用Post即可,在Form中定義mothod="post"。


33. 問:為什么加了<%@page contentType="text/html;charset=gb2312" %>插入數(shù)據(jù)庫的中文,依然是亂碼?
答:
這要從環(huán)境看,能顯示說明你的JSP引擎沒有問題,但寫入數(shù)據(jù)庫時你的JDBC能不能處理中文,同一公司不同版本的JDBC都有支持中文和不支持中文的情況,RESIN自帶的MYSQL JDBC就不支持,MM的就支持,還有你的數(shù)據(jù)庫類型是否支持中文?CHAR的一般支持,但是否用binary存儲雙字節(jié)碼


34. 問:對于JFrame,hide(),show()與setVisibel()有什么區(qū)別嗎?
答:
setVisible()從Component繼承過來,而hide(),show()從Window里面繼承過來。
Makes the Window visible. If the Window and/or its owner are not yet displa yable, both are made displayable. The Window will be validated prior to being made visible. If t he Window is already visible, this will bring the Window to the front. 區(qū)別在這。


36. 問:sendRedirect為什么不可以轉(zhuǎn)到mms協(xié)議的地址的?response.sendRedirect("mms://missiah.adsldns.org:9394");
答:java平臺目前實現(xiàn)的protocol中并沒有mms,你可以取系統(tǒng)屬性java.protocol.handler.pkgs看看它的值中有沒有mms,所以如果要想重定向到mms://host這樣和URL,只有生成客戶端的JAVASCRIPT讓它來重定向


37. 問:JTable中怎樣定義各個Columns和Width和怎樣設(shè)置表格的內(nèi)容靠做靠右或居中?
答:
TableColumn tc = table.getColumn("Name");//取得列名為"Name"的列Handle
int currentWidth = tc.getPreferredWidth(); //取得該列當(dāng)前的寬度
tc.setPreferredWidth(200); //設(shè)置當(dāng)前列寬
tc.setMaxWidth(200); //設(shè)置該列最大寬度
tc.setMinWidth(50); //設(shè)置該列最小寬度


38. 問:批操作是否可用于select語句?
答:批操作其實是指成批理更新的操作,絕對不可能用于select操作。


39. 問:為什么jsp路徑太深文件名太長就無法讀取文件?
答:path不能超過255長度,不然就找不到了.這是作業(yè)系統(tǒng)的事。


40. 問:如何讓頁面不保留緩存?
答:
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
%>


41. 問:我的applet code 中用到j(luò)button 時就出錯是否由于ie不支持swing package 請問應(yīng)怎么辦?
答:JBUTTON是SWING基本包啊,只要把jdk/jre/lib/rt.jar放在classpath就行了.不要加載任何別的庫。


42. 問:不知道java是否支持midi格式,如果支持,應(yīng)該怎么把wave格式轉(zhuǎn)換成midi格式?
答:目前還不行,可以看一下JMF三個版中對MIDI的格式支持是read only,而WAVE是read/write,MIDI只能播放,不能生成。


43. 問:在jsp里面防止用戶直接輸入url進去頁面,應(yīng)該怎么做呢?
答:
一是從web服務(wù)器控制,對某一目錄的所有訪問要通過驗證.
二是在要訪問的頁面中加入控制.這個一般用session,也可以用請求狀態(tài)碼實現(xiàn)


44. 問:
例如后臺有一計算應(yīng)用程序(此程序運算起來很慢,可持續(xù)幾分鐘到幾小時,這不管,主要是能激活它),客戶機講任務(wù)提交后,服務(wù)器對任務(wù)進行檢測無誤后將向服務(wù)器后臺程序發(fā)送信息,并將其激活。要求如下:
1)首先將后臺程序激活,讓它執(zhí)行此任務(wù)(比如,前臺將計算的C代碼提交上后,后臺程序程序能馬上調(diào)用,并將其運行)
2)要在前臺JSP頁面中顯示運行過程信息(由于運行時間長,希望讓客戶看到運行過程中產(chǎn)生的信息)如何完成?

答:
活是可以的,運行一個shell讓它去運行后臺就行,但不可能取出運行信息,因為HTTP的超時限制不可能永遠等你后臺運行的,而且信息如果要動態(tài)實時推出來就得用SERVER PUSH技術(shù)。

?

45. 問:數(shù)據(jù)庫是datetime 型 ,插入當(dāng)前時間到數(shù)據(jù)庫?
答:
java.sql.Date sqlDate = new java.sql.Date();
PreparedStatement pstmt = conn.prepareStatement("insert into foo(time) values(?)");
pstmt.setDate(1,sqlDate);
pstmt.executeUpdate();



?