1. 問:在JAVA與JSP中要調用一個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)可以把上頁的表單內容重新顯示出來,但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ù)相乘后結果不精確如100.0 * 0.6 結果等于 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)頁過期
答:
在<head></head>里面加以下代碼
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
或者在表單頁中加上
<%
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)這個接口就一定有這個方法可以供我調用.這樣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. 問:什么是回調?
答:
簡單說,回調用不是讓你去監(jiān)聽誰做完了什么事,而是誰做完了什么事就報告給你. 這就是回調用的思想.例子太多了,AWT的事件,SWING事件模型都是這樣有. 還有多線程中,如果要控制線程數(shù),不能總是查詢每個線程是否結束,要在每個線程結束時讓線程自己告訴主線程我結束了,你可以開新的線程了.
19. 問:簡要介紹一下compareTo方法
答:
compareTo方法是Comparable 接口必需實現(xiàn)的方法,只要實現(xiàn)Comparable 就可以用Arrays.srot()排序就象實現(xiàn)Runnable接口的run就能Thread()一樣.
20. 問:如何可以從別的Web服務器檢索頁, 然后把檢索到的網(wǎng)頁的HTML代碼儲存在一個變量中返回過來
答:這是一個簡單的WEB ROBOT實現(xiàn),用URL類實現(xiàn)從網(wǎng)頁中抓內容,然后自己寫一個分析程序從中找出新的URL,不斷遞歸下去就行了.
21. 問:applet中如何獲得鍵盤的輸入
答:application的System.in是當前系統(tǒng)的標準輸入,applet因為安全的原因不可能讀取當前系統(tǒng)(客戶端)的標準輸入,只能從它的ROOT組件的事件中,比如鍵盤事件中取得鍵值.
22. 問:怎樣計算代碼執(zhí)行所花費的時間?
答:
代碼開始取時間,結束后取時間,相減
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ā)生多個池化,如果你只連一結一個數(shù)據(jù)源,永遠不要用多個連結池. 所以連結池的初始化一定要做成靜態(tài)的,而且應該在構造對象之前,也就是只有在類LOAD的時候,別的時候不應該有任何生成新的連結池的時候。
25. 問:JavaMail要怎么安裝?
答:下載兩個包,一個是javamail包,另一個是jaf包。下載完直接把這兩個包不解壓加到CLASSPATH。
26. 問:怎樣把地址欄里的地址鎖定?
答:把你的服務器的可訪問目錄索引選項關閉就行了,任何服務器都有一個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程序。不需要什么特別的設置。等于你的機器里面有了jvm。
31. 問:WEB上面怎么樣連接上一個EXCEL表格?
答:
定義頁面得contentType="application/vnd.ms-excel",讓頁面以excel得形式打開。同樣也可以以word得形式打開:application/msword。
32. 問:怎樣才能避免textarea字數(shù)限制?
答:是使用了FORM的默認方法的緣故,如果什么也不寫默認是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為什么不可以轉到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和怎樣設置表格的內容靠做靠右或居中?
答:
TableColumn tc = table.getColumn("Name");//取得列名為"Name"的列Handle
int currentWidth = tc.getPreferredWidth(); //取得該列當前的寬度
tc.setPreferredWidth(200); //設置當前列寬
tc.setMaxWidth(200); //設置該列最大寬度
tc.setMinWidth(50); //設置該列最小寬度
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 請問應怎么辦?
答:JBUTTON是SWING基本包啊,只要把jdk/jre/lib/rt.jar放在classpath就行了.不要加載任何別的庫。
42. 問:不知道java是否支持midi格式,如果支持,應該怎么把wave格式轉換成midi格式?
答:目前還不行,可以看一下JMF三個版中對MIDI的格式支持是read only,而WAVE是read/write,MIDI只能播放,不能生成。
43. 問:在jsp里面防止用戶直接輸入url進去頁面,應該怎么做呢?
答:
一是從web服務器控制,對某一目錄的所有訪問要通過驗證.
二是在要訪問的頁面中加入控制.這個一般用session,也可以用請求狀態(tài)碼實現(xiàn)
44. 問:
例如后臺有一計算應用程序(此程序運算起來很慢,可持續(xù)幾分鐘到幾小時,這不管,主要是能激活它),客戶機講任務提交后,服務器對任務進行檢測無誤后將向服務器后臺程序發(fā)送信息,并將其激活。要求如下:
1)首先將后臺程序激活,讓它執(zhí)行此任務(比如,前臺將計算的C代碼提交上后,后臺程序程序能馬上調用,并將其運行)
2)要在前臺JSP頁面中顯示運行過程信息(由于運行時間長,希望讓客戶看到運行過程中產(chǎn)生的信息)如何完成?
答:
活是可以的,運行一個shell讓它去運行后臺就行,但不可能取出運行信息,因為HTTP的超時限制不可能永遠等你后臺運行的,而且信息如果要動態(tài)實時推出來就得用SERVER PUSH技術。
45. 問:數(shù)據(jù)庫是datetime 型 ,插入當前時間到數(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種如何調用session
答:
你可把session對象作為一個參數(shù)傳給bean
在BEAN中定義HttpServletRequest request;HttpSession session;
然后
session = request.getSession(false);
false為如果session為空,不建立新的session
將session作為參數(shù)傳入.其實只要將request傳入就可以
50. 問:如何把txt或word文件按原格式顯示在jsp頁面或servlet上?
答:
其實一個非常簡單的解決方法就是在服務器的MIME中指點定TEXT和WORD的解釋方式,然后用JSP或SERVLET生成它就行了,客戶端就會自動調用相應程序打開你的文檔。
如果是希望按原格式的顯示在頁面上,而不是調用其他程序打開那么你可以試試用WEBDEV協(xié)議,可以說這是MS的一個亮點.它是在WEB方式下打開文檔,和共享一樣.完全符合的要求。
51. 問:object的clone方法為什么不能直接調用?
答:
這個方法在object中是protected
為什么要把這個方法定義為protected,這是一個折中,它的目的是想知道你這個方法在Object里只是一個標記,而不是一個實現(xiàn),比如
public class Object
{
.............
protected Object clone()
{}
}
所以直接繼承的clone()方法并不能做任何時,你要使用這個方法就要重載這個方法并放寬訪問權限為public,或實現(xiàn)cloneable接口. 但它沒法這樣告訴你它沒有真的實現(xiàn),只好用protected 方法加以警示
52. 問:一個頁面中如何刷新另外一個頁面?
答:
要求是這些面頁必須有關聯(lián),一是它們都有一個共同的頂層幀,也就是說是一個幀內的分級頁面,當然可以是任意級,幀內再分幀也可以,另一個可能是當前窗口彈出的窗口,如果沒有聯(lián)系,那就不可能用一個頁面刷新另一個頁面. 幀內只要一級一級引用就行了. 比如在左幀中一個頁面中寫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中用FontMetrics 類來取字符寬度。
55. 問:String kk=application/octet-stream; name="G:/SMBCrack.exe";如何得到SMBCrack.exe?
答:
這應該是解析上傳時候的二進制流得到的這一行里面格式是固定的,取到name="后面的字符串,然后把";去掉。然后取最后一個/后面的所有字符組成一個新字符串就行了。
56. 問:如何傳值并不刷新頁面?
答:
彈出一個頁面進行值的選擇或者輸入,ok后使用將值傳給原窗口,使用javascript關閉打開的窗口即可:
window.close();opener.focus();
57. 問:有一個字符串:"EF0C114EA4",如何變?yōu)閍[0] = 0xEF a[1] = 0x0C a[2] = 0x11 a[3] = 0x4E a[4] = 0xA4?
答:
String str="EF0C114EA4F";
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轉換成一個四字節(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應用程序中如何動態(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時設為 true。
61. 問:book mybook=new book(bookid);book是servlet,出錯。
答:
book是servlet,能book mybook=new book(bookid);
說明自己實現(xiàn)了servlet容器?不然,servlet能讓你自己去調用? servlet如果調用其實和EJB連1%的區(qū)別都沒有,它們都是自己繼承或實現(xiàn)一些接口,在這些父類或接口中實現(xiàn)了如果和容器\"打交道"的方法,然后容器調用這些方法來管理它,讓它生成實例,池化,鈍化,銷毀,再生等.所以這樣寫是錯誤的。
62. 問:給定一個字符串5*(5+9)/7怎樣計算出結果?
答:
可有兩種方法
1。用堆棧完成
2。最簡單的方法,不用編程,如果有任何一個數(shù)據(jù)庫的化,用select (5*(5+9)/7) from oneTable
63. 問:如何實現(xiàn)遞交表單內容的加密解密?
答:
如果你用IE目前只能用SSL協(xié)議,這一層不要你考慮,否則只你用你自己的工具加密傳輸,接收后再解密友,至于如何加解,如果要和公認的系統(tǒng)結合,就用通用的MD5,RAS等公開算法,如果你只是自己傳自己解,你隨便按你的想法把數(shù)據(jù)加上一些東西,取回來按規(guī)則減掉這些東西,我敢保證除你自己沒有任何人能知道解密方法.
64. 問:為什么Integer.parseInt("+1");會拋出NumberFormatException的異常?
答:因為"+"運行算在JAVA中被重載.系統(tǒng)無法確定你用的是算術加還是字符+。
這一點可以在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)知道-運算肯定是算術運行.所以把document.t.s.value轉換成數(shù)字.
65. 問:hashCode() 有什么用為什么有時候需要覆蓋Object里的hashcode()方法?
答:這就是這個對象的身份證啊,要不如何區(qū)分哪個對象。
66. 問:怎樣在tomcat中實現(xiàn)一個定時執(zhí)行的東東?
答:
在應用程序啟動時自動運行。servlet2.3中定義了ServletListener,監(jiān)聽Servlet Con text的啟動或則關閉(可在配置文件中配置),啟動時觸發(fā)一個守護程序的運行(可以實現(xiàn)java.util.Timer或則 javax.swing.Timer).
67. 問:程序可以輸出自己嗎?
答:孔德悖論這個非常有名的法則.就是說任何程序都不可能輸出自己.
68. 問:能夠把字符轉化成ASCII碼?比如將 A 轉化成 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,消息機制就是你把這個東西從郵局寄給你的鄰居了.