1. 問:在JAVA與JSP中要調(diào)用一個LINUX上的腳本程序,或WINDOWS上的腳本程序,該怎么寫? 答:System.getRuntime().exec("bash < aaa.sh");
2. 問:java中用什么表示雙引號 答:"""
3. 問:如何在JSP程序里另起一個線程? 答: JSP本身就是獨立線程運行而不象CGI都是獨立進程. 一般: Thread t = new Thread("你的對象\"); t.start();就可以了. 要求你這個對象要實現(xiàn)runnable接口或繼承thread.
4. 問:jsp如何獲得客戶端的IP地址? 答: request.getRemoteAddr() 看看各個webserver的API文檔說明,一般都有自帶的,resin和tomcat都有
5. 問:程序終止與輸出終止 答: 程序中止:return; 輸出中止:out.close();這一句相當于ASP的response.end
6. 問:jsp中如何得到上頁的URL? 答:request.getHeader("referer");
7. 問:提交網(wǎng)頁的網(wǎng)頁過期功能是怎么做的? 答:response.setHader("Expires","0");
8. 問:在JSP網(wǎng)頁中如何知道自已打開的頁面的名稱 答: request.getRequestURI() ;//文件名 request.getRequestURL() ;//全部URL
9. 問:提交表單后驗證沒有通過,返回提交頁面,如何使原提交頁面中的數(shù)據(jù)保留? 答:javascript的go(-1)可以把上頁的表單內(nèi)容重新顯示出來,但password域沒有
10. 問:如何取得http的頭信息? 答:request.getHader(headerName);
11. 問:&&和&的區(qū)別? 答: &&是短路的與操作,也就是當?shù)匾粋€條件是false的時候,第二個條件不用執(zhí)行 &相反,兩個條件總是執(zhí)行。
12. 問:將*以正弦曲線的一個周期顯示出來 答: public void paint(Graphics g) { for(int i=0;i<200;i++) g.drawString("*",i,(int)(Math.sin(i)*20)+50); } }
13. 問:浮點數(shù)相乘后結(jié)果不精確如100.0 * 0.6 結(jié)果等于 60.0004 答: 這不叫錯誤,float和double是這樣實現(xiàn)的.如果要精確計算,java提供了一個 strictfp,它的計算遵循IEEE 754標準.而普通的float和double是由地平臺浮點格式或 硬件提 供的額外精度或表示范圍。
14. 問:如何獲得當前用的cursors的位置? 答: int row = rs.getRow()就是當前指針行數(shù),還有 isFrist();isBeforeFist();isLast();isAfterLast();可以測試是不是在方法名所說的 位置
15. 問:表單成功提交了,點后退顯示網(wǎng)頁過期 答: 在里面加以下代碼
或者 在表單頁中加上
16. 問:接口的簡單理解 答:接口為了規(guī)范,比如我在接口中定義了一個方法: getData() 這是用來從不同的數(shù)據(jù)庫中取數(shù)據(jù)的,就是JDBC的實現(xiàn) 對于用戶,我不要知道每種數(shù)據(jù)庫是如何做的,但我知道如何它們要實現(xiàn)這個接口就一定 有這個方法可以供我調(diào) 用.這樣SUN就把這個接口給各個數(shù)據(jù)庫開發(fā)商,讓他們自己實現(xiàn). 但為什么不用繼承而用接口哩,因為繼承只能從一個你類繼承,而接口可以實現(xiàn)多個,就 是說我實現(xiàn)的子類有多 個規(guī)定好的接口中的功能. 這只是簡單的理解,等你深入理解抽象的時候就知道抽象到抽象類時為什么還要再抽象 到接口.
17. 問:怎樣編寫一個取消按鈕(怎樣返回上一個頁面,象工具欄的后退按鈕)? 答: javascript把每次瀏覽過的location都壓到了一個棧中,這個棧就是 history,然后你如果要回到第幾個頁面它就做幾次POP操作,把最后POP出來的那個LOCA TION給你. 這就是JAVASCRIPT在實現(xiàn)history.go(-x)的原理.
18. 問:什么是回調(diào)? 答: 簡單說,回調(diào)用不是讓你去監(jiān)聽誰做完了什么事,而是誰做完了什么事就報告給你. 這就是回調(diào)用的思想.例子太多了,AWT的事件,SWING事件模型都是這樣有. 還有多線程中,如果要控制線程數(shù),不能總是查詢每個線程是否結(jié)束,要在每個線程結(jié)束 時讓線程自己告訴主線 程我結(jié)束了,你可以開新的線程了.
19. 問:簡要介紹一下compareTo方法 答: compareTo方法是Comparable 接口必需實現(xiàn)的方法,只要實現(xiàn)Comparable 就可以用Arr ays.srot()排序就象實 現(xiàn)Runnable接口的run就能Thread()一樣.
20. 問:如何可以從別的Web服務器檢索頁, 然后把檢索到的網(wǎng)頁的HTML代碼儲存在一個變 量中返回過來 答:這是一個簡單的WEB ROBOT實現(xiàn),用URL類實現(xiàn)從網(wǎng)頁中抓內(nèi)容,然后自己寫一個分析 程序從中找出新的URL,不斷遞歸下去就行了. |
張彬
|
2005-11-21 17:56 |
(二) 21. 問:applet中如何獲得鍵盤的輸入 答:application的System.in是當前系統(tǒng)的標準輸入,applet因為安全的原因不可能讀 取當前系統(tǒng)(客戶端)的標準輸入,只能從它的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)的,而且應該在構(gòu)造對象之前,也就是只有在類LOA D的時候,別的時候不應該有任何生成新的連結(jié)池的時候。
25. 問:JavaMail要怎么安裝? 答:下載兩個包,一個是javamail包,另一個是jaf包。下載完直接把這兩個包不解壓 加到CLASSPATH。
26. 問:怎樣把地址欄里的地址鎖定? 答:把你的服務器的可訪問目錄索引選項關(guān)閉就行了,任何服務器都有一個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里面
30. 問:java-plug-in是什么? 答:Java Runtime Environment的插件。用來運行java程序。不需要什么特別的設(shè)置。 等于你的機器里面有了jvm。
31. 問:WEB上面怎么樣連接上一個EXCEL表格? 答: 定義頁面得contentType="application/vnd.ms-excel",讓頁面以excel得形式打開。 同樣也可以以word得形式打開:application/msword。
32. 問:怎樣才能避免textarea字數(shù)限制? 答:是使用了FORM的默認方法的緣故,如果什么也不寫默認是GET改用Post即可,在For m中定義mothod="post"。
33. 問:為什么加了插入數(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.han dler.pkgs看看它的值中有沒有mms,所以如果要想重定向到mms://host這樣和URL,只有生成 客戶端的JAVASCRIPT讓它來重定向
37. 問:JTable中怎樣定義各個Columns和Width和怎樣設(shè)置表格的內(nèi)容靠做靠右或居中? 答: TableColumn tc = table.getColumn("Name");//取得列名為“Name”的列Handle int currentWidth = tc.getPreferredWidth(); //取得該列當前的寬度 tc.setPreferredWidth(200); //設(shè)置當前列寬 tc.setMaxWidth(200); //設(shè)置該列最大寬度 tc.setMinWidth(50); //設(shè)置該列最小寬度
38. 問:批操作是否可用于select語句? 答:批操作其實是指成批理更新的操作,絕對不可能用于select操作。
39. 問:為什么jsp路徑太深文件名太長就無法讀取文件? 答:path不能超過255長度,不然就找不到了.這是作業(yè)系統(tǒng)的事。 |
|
張彬
|
2005-11-21 17:59 |
(三) 51. 問:object的clone方法為什么不能直接調(diào)用? 答: 這個方法在object中是protected 為什么要把這個方法定義為protected,這是一個折中,它的目的是想知道你這個方法在 Object里只是一個標記,而不是一個實現(xiàn),比如
public class Object {
............. protected Object clone() {} }
所以直接繼承的clone()方法并不能做任何時,你要使用這個方法就要重載這個方法并放 寬訪問權(quán)限為public,或?qū)崿F(xiàn)cloneable接口. 但它沒法這樣告訴你它沒有真的實現(xiàn),只好用protected 方法加以警示
52. 問:一個頁面中如何刷新另外一個頁面? 答: 要求是這些面頁必須有關(guān)聯(lián),一是它們都有一個共同的頂層幀,也就是說是一個幀內(nèi)的分 級頁面,當然可以是任意級,幀內(nèi)再分幀也可以,另一個可能是當前窗口彈出的窗口,如果沒有 聯(lián)系,那就不可能用一個頁面刷新另一個頁面. 幀內(nèi)只要一級一級引用就行了. 比如在左幀中一個頁面中寫 top.right.location.reload();那么名為right的右?guī)械捻撁婢蜁⑿? 彈出的一樣,用open時的名稱刷新子窗口,子窗口用opener刷新主窗口
53. 問:如何在jsp中怎么樣向客戶端寫cookies? 答: Cookie coo = new Cookie(name, value); HttpServletResponse.addCookie(name);
54. 問:為什么jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 得到 的字體寬度不一樣? 答:就是說如果不是指定為等寬字體,每個字體的寬度都是不一樣的.因此JAVA中用Fon tMetrics 類來取字符寬度。
55. 問:String kk=application/octet-stream; name="G:/SMBCrack.exe";如何得到SMBC rack.exe? 答: 這應該是解析上傳時候的二進制流得到的 這一行里面格式是固定的,取到name="后面的字符串,然后把";去掉。 然后取最后一個/后面的所有字符組成一個新字符串就行了。
56. 問:如何傳值并不刷新頁面? 答: 彈出一個頁面進行值的選擇或者輸入,ok后使用將值傳給原窗口,使用javascript關(guān)閉 打開的窗口即可: window.close();opener.focus();
57. 問:有一個字符串:“EF0C114EA4”,如何變?yōu)閍[0] = 0xEF a[1] = 0x0C a[2] = 0x 11 a[3] = 0x4E a[4] = 0xA4? 答: String str="EF0C114EA4F"; out.print(str+""); int l=str.length()/2+str.length()%2,j=0,k=0; String[] a=new String[l]; for(int i=0;i"); j+=2; }
58. 問:怎樣將一個int轉(zhuǎn)換成一個四字節(jié)的byte數(shù)組? 答: int x = 1234567; byte[] b = new byte[4]; for(int i=0;i>( i*8)) & 0xFF; }
59. 問:indexOf()的使用需要注意什么? 答:參數(shù)是指從第幾位(1,2,3,...)開始搜索,而返回值是指搜索到的位置(0, 1,2,3.......)注意是從零算起的。
60. 問:在Java應用程序中如何動態(tài)的添加一個按鈕? 答: 這里涉及一個組件重繪的問題,組件要先于panel被顯示之處存在,如果一panel已經(jīng)顯示 了,那么加在上面你能看到嗎?但如果在同一個panel上,先有button A,假如按下它加了butt on B,這時你如果使整個panel重給,那么A本身要重繪,它的事件監(jiān)聽就沒有了,當然也就加不 成B了,所以如果要先有另一個panel,當按A時把B加在這個panel上并重繪這個paenl,其實更 好的方法是先把B加在panel中,同一個也行.把它setVisiable(flase),按A時設(shè)為true。 |
|
張彬
|
2005-11-21 18:00 |
(四) 61. 問:book mybook=new book(bookid);book是servlet,出錯。 答: book是servlet,能book mybook=new book(bookid); 說明自己實現(xiàn)了servlet容器?不然,servlet能讓你自己去調(diào)用? servlet如果調(diào)用其實和EJB連1%的區(qū)別都沒有,它們都是自己繼承或?qū)崿F(xiàn)一些接口,在這 些父類或接口中實現(xiàn)了如果和容器"打交道"的方法,然后容器調(diào)用這些方法來管理它,讓它 生成實例,池化,鈍化,銷毀,再生等.所以這樣寫是錯誤的。
62. 問:給定一個字符串5*(5+9)/7怎樣計算出結(jié)果? 答: 可有兩種方法 1。用堆棧完成 2。最簡單的方法,不用編程,如果有任何一個數(shù)據(jù)庫的化, 用select (5*(5+9)/7) from oneTable
63. 問:如何實現(xiàn)遞交表單內(nèi)容的加密解密? 答: 如果你用IE目前只能用SSL協(xié)議,這一層不要你考慮,否則只你用你自己的工具加密傳輸 ,接收后再解密友,至于如何加解,如果要和公認的系統(tǒng)結(jié)合,就用通用的MD5,RAS等公開算法 ,如果你只是自己傳自己解,你隨便按你的想法把數(shù)據(jù)加上一些東西,取回來按規(guī)則減掉這些 東西,我敢保證除你自己沒有任何人能知道解密方法.
64. 問:為什么Integer.parseInt("+1");會拋出NumberFormatException的異常? 答:因為"+"運行算在JAVA中被重載.系統(tǒng)無法確定你用的是算術(shù)加還是字符+。
這一點可以在JAVASCRIPT中更好地理解:
var a = document.t.s.value+1; 這時a = 12345,因為document.t.s.value作為字符串. 但var a = document.t.s.value-1; a 就是1233,因為系統(tǒng)知道-運算肯定是算術(shù)運行.所以把document.t.s.value 轉(zhuǎn)換成數(shù)字.
65. 問:hashCode() 有什么用為什么有時候需要覆蓋Object里的hashcode()方法? 答:這就是這個對象的身份證啊,要不如何區(qū)分哪個對象。
66. 問:怎樣在tomcat中實現(xiàn)一個定時執(zhí)行的東東? 答: 在應用程序啟動時自動運行。servlet2.3中定義了ServletListener,監(jiān)聽Servlet Con text的啟動或則關(guān)閉(可在配置文件中配置),啟動時觸發(fā)一個守護程序的運行(可以實現(xiàn) java.util.Timer或則javax.swing.Timer).
67. 問:程序可以輸出自己嗎? 答:孔德悖論這個非常有名的法則.就是說任何程序都不可能輸出自己.
68. 問:能夠把字符轉(zhuǎn)化成ASCII碼?比如將 A 轉(zhuǎn)化成 65? 答: int a=′A′; out.println(a);
69. 問:如何區(qū)分輸入的文字中的全角與半角? 答:由于不能分辨出全角和半角字符的值有什么規(guī)律,只好把全角符號牧舉出來了.
70. 問:用戶注冊后的自動發(fā)信程序該怎么做? 答: 這種發(fā)信程序不考慮性能,因為不可能1秒就有一個人注冊,我們說的考慮性能的發(fā)信程 序是指上百萬封信在隊列里要不停發(fā)送的那種,象你這個隨便怎么寫一個程序都行,沒有必要 用JAVAMAIL.只要指定一個發(fā)信的服務器然后用cocket連它的25口就行了. 自己用SOCKET連SMTP的25口發(fā)一封信就好象兩個鄰居之間送一樣東西,直接遞過去得了 ,用JAVAMAIL,消息機制就是你把這個東西從郵局寄給你的鄰居了. |
|
|