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(); 這一句相當(dāng)于 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ū)別?
答: & 是位運算符,表示按位與運算, && 是邏輯運算符,表示邏輯與( and )。
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 標(biāo)準(zhǔn) . 而普通的 float 和 double 是由地平臺浮點格式或硬件提供的額外精度或表示范圍。
14. 問:如何獲得當(dāng)前用的 cursors 的位置?
答:
int row = rs.getRow() 就是當(dāng)前指針行數(shù) , 還有 isFrist();isBeforeFist();isLast();isAfterLast(); 可以測試是不是在方法名所說的位置
15. 問:表單成功提交了,點后退顯示網(wǎng)頁過期
答:
在 <head></head> 里面加以下代碼
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<
或者在表單頁中加上
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
%>
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 出來的那個 LOCATION 給你 . 這就是 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 就可以用 Arrays.srot() 排序就象實現(xiàn) Runnable 接口的 run 就能 Thread() 一樣 .
20. 問:如何可以從別的 Web 服務(wù)器檢索頁 , 然后把檢索到的網(wǎng)頁的 HTML 代碼儲存在一個變量中返回過來
答:這是一個簡單的 WEB ROBOT 實現(xiàn) , 用 URL 類實現(xiàn)從網(wǎng)頁中抓內(nèi)容 , 然后自己寫一個分析程序從中找出新的 URL, 不斷遞歸下去就行了 .
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ù)源 , 永遠(yuǎn)不要用多個連結(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
中用到
jbutton
時就出錯是否由于
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 的超時限制不可能永遠(yuǎn)等你后臺運行的 , 而且信息如果要動態(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();
46. 問:怎樣去掉字符串前后的空格。
答: String.trim()
47. 問: session 怎樣存取 int 類型的變量?
答:
session.setAttribute("int", i+"");
int i = Integer.parseInt(session.getAttribute("int"));
48. 問:在 javascript 中如何使輸出的 float 類型的數(shù)據(jù)保留兩位小數(shù)。
答: Math.round(aaaaa*100)/100 。
49. 問:在 bean 種如何調(diào)用 session
答:
你可把 session 對象作為一個參數(shù)傳給 bean
在 BEAN 中定義 HttpServletRequest request;HttpSession session;
然后
session = request.getSession(false);
false 為如果 session 為空 , 不建立新的 session
將 session 作為參數(shù)傳入 . 其實只要將 request 傳入就可以
50. 問:如何把 txt 或 word 文件按原格式顯示在 jsp 頁面或 servlet 上?
答:
其實一個非常簡單的解決方法就是在服務(wù)器的 MIME 中指點定 TEXT 和 WORD 的解釋方式 , 然后用 JSP 或 SERVLET 生成它就行了 , 客戶端就會自動調(diào)用相應(yīng)程序打開你的文檔。
如果是希望按原格式的顯示在頁面上,而不是調(diào)用其他程序打開那么你可以試試用 WEBDEV 協(xié)議 , 可以說這是 MS 的一個亮點 . 它是在 WEB 方式下打開文檔 , 和共享一樣 . 完全符合的要求。
51. 問: object 的 clone 方法為什么不能直接調(diào)用?
答:
這個方法在 object 中是 protected
為什么要把這個方法定義為 protected, 這是一個折中 , 它的目的是想知道你這個方法在 Object 里只是一個標(biāo)記 , 而不是一個實現(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)的分級頁面 , 當(dāng)然可以是任意級 , 幀內(nèi)再分幀也可以 , 另一個可能是當(dāng)前窗口彈出的窗口 , 如果沒有聯(lián)系 , 那就不可能用一個頁面刷新另一個頁面 . 幀內(nèi)只要一級一級引用就行了 . 比如在左幀中一個頁面中寫 top.right.location.reload(); 那么名為 right 的右?guī)械捻撁婢蜁⑿?/span> . 彈出的一樣 , 用 open 時的名稱刷新子窗口 , 子窗口用 opener 刷新主窗口
53. 問:如何在 jsp 中怎么樣向客戶端寫 cookies ?
答:
Cookie coo = new Cookie(name, value);
HttpServletResponse.addCookie(name);
54. 問:為什么 jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 得到的字體寬度不一樣?
答:就是說如果不是指定為等寬字體 , 每個字體的寬度都是不一樣的 . 因此 JAVA 中用 FontMetrics 類來取字符寬度。
55. 問: String kk=application/octet-stream; name="G:/SMBCrack.exe"; 如何得到 SMBCrack.exe ?
答:
這應(yīng)該是解析上傳時候的二進制流得到的這一行里面格式是固定的,取到 name=" 后面的字符串,然后把 "; 去掉。然后取最后一個 / 后面的所有字符組成一個新字符串就行了。
56. 問:如何傳值并不刷新頁面?
答:
彈出一個頁面進行值的選擇或者輸入, ok 后使用將值傳給原窗口,使用 javascript 關(guān)閉打開的窗口即可:
window.close();opener.focus();
57.
問:有一個字符串:
"EF
答:
String str="EF
out.print(str+"<br>");
int l=str.length()/2+str.length()%2,j=0,k=0;
String[] a=new String[l];
for(int i=0;i<l;i++){
if(str.length()-j==1)
k=str.length();
else
k=j+2;
a[i]="0x"+str.substring(j,k);
out.print("a["+Integer.toString(i)+"]="+a[i]+"<br>");
j+=2;
}
58. 問:怎樣將一個 int 轉(zhuǎn)換成一個四字節(jié)的 byte 數(shù)組?
答:
int x = 1234567;
byte[] b = new byte[4];
for(int i=0;i<b.length;i++)
{
b[i] = (x >>( i*8)) & 0xFF;
}
59. 問: indexOf() 的使用需要注意什么?
答:參數(shù)是指從第幾位( 1 , 2 , 3 , ... )開始搜索,而返回值是指搜索到的位置( 0 , 1 , 2 , 3....... )注意是從零算起的。
60. 問:在 Java 應(yīng)用程序中如何動態(tài)的添加一個按鈕?
答:
這里涉及一個組件重繪的問題 , 組件要先于 panel 被顯示之處存在 , 如果一 panel 已經(jīng)顯示了 , 那么加在上面你能看到嗎 ? 但如果在同一個 panel 上 , 先有 button A, 假如按下它加了 butt on B, 這時你如果使整個 panel 重給 , 那么 A 本身要重繪 , 它的事件監(jiān)聽就沒有了 , 當(dāng)然也就加不成 B 了 , 所以如果要先有另一個 panel, 當(dāng)按 A 時把 B 加在這個 panel 上并重繪這個 paenl, 其實更好的方法是先把 B 加在 panel 中 , 同一個也行 . 把它 setVisiable(flase), 按 A 時設(shè)為 true 。
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é)議 , 這一層不要你考慮 , 否則只你用你自己的工具加密傳輸 , 接收后再解密友 , 至于如何加解 , 如果要和公認(rèn)的系統(tǒng)結(jié)合 , 就用通用的 MD5,RAS 等公開算法 , 如果你只是自己傳自己解 , 你隨便按你的想法把數(shù)據(jù)加上一些東西 , 取回來按規(guī)則減掉這些東西 , 我敢保證除你自己沒有任何人能知道解密方法 .
64. 問:為什么 Integer.parseInt("+1"); 會拋出 NumberFormatException 的異常?
答:因為 "+" 運行算在 JAVA 中被重載 . 系統(tǒng)無法確定你用的是算術(shù)加還是字符 + 。
這一點可以在 JAVASCRIPT 中更好地理解 :
<form name="t"><input name=s value=1234></form>
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í)行的東東?
答:
在應(yīng)用程序啟動時自動運行。 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ā)信的服務(wù)器然后用 cocket 連它的 25 口就行了 . 自己用 SOCKET 連 SMTP 的 25 口發(fā)一封信就好象兩個鄰居之間送一樣?xùn)|西 , 直接遞過去得了 , 用 JAVAMAIL, 消息機制就是你把這個東西從郵局寄給你的鄰居了 ?