明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

問(wèn)題實(shí)錄(3)

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

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

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

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

答:
活是可以的,運(yùn)行一個(gè)shell讓它去運(yùn)行后臺(tái)就行,但不可能取出運(yùn)行信息,因?yàn)镠TTP的超時(shí)限制不可能永遠(yuǎn)等你后臺(tái)運(yùn)行的,而且信息如果要?jiǎng)討B(tài)實(shí)時(shí)推出來(lái)就得用SERVER PUSH技術(shù)。

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

46. 問(wèn):怎樣去掉字符串前后的空格。
答:String.trim()。

47. 問(wèn):session怎樣存取int類(lèi)型的變量?
答:
session.setAttribute("int", i+"");

int i = Integer.parseInt(session.getAttribute("int"));

48. 問(wèn):在javascript中如何使輸出的float類(lèi)型的數(shù)據(jù)保留兩位小數(shù)。
答:Math.round(aaaaa*100)/100。

49. 問(wèn):在bean種如何調(diào)用session。
答:
你可把session對(duì)象作為一個(gè)參數(shù)傳給bean
在BEAN中定義HttpServletRequest request;HttpSession session;
然后
session = request.getSession(false);
false為如果session為空,不建立新的session
將session作為參數(shù)傳入.其實(shí)只要將request傳入就可以

50. 問(wèn):如何把txt或word文件按原格式顯示在jsp頁(yè)面或servlet上?
答:
其實(shí)一個(gè)非常簡(jiǎn)單的解決方法就是在服務(wù)器的MIME中指點(diǎn)定TEXT和WORD的解釋方式,然后用JSP或SERVLET生成它就行了,客戶(hù)端就會(huì)自動(dòng)調(diào)用相應(yīng)程序打開(kāi)你的文檔。
如果是希望按原格式的顯示在頁(yè)面上,而不是調(diào)用其他程序打開(kāi)那么你可以試試用WEBDEV協(xié)議,可以說(shuō)這是MS的一個(gè)亮點(diǎn).它是在WEB方式下打開(kāi)文檔,和共享一樣.完全符合的要求。

51. 問(wèn):object的clone方法為什么不能直接調(diào)用?
答:
這個(gè)方法在object中是protected
為什么要把這個(gè)方法定義為protected,這是一個(gè)折中,它的目的是想知道你這個(gè)方法在Object里只是一個(gè)標(biāo)記,而不是一個(gè)實(shí)現(xiàn),比如\r

public class Object
{

.............
protected Object clone()
{}
}

所以直接繼承的clone()方法并不能做任何時(shí),你要使用這個(gè)方法就要重載這個(gè)方法并放寬訪(fǎng)問(wèn)權(quán)限為public,或?qū)崿F(xiàn)cloneable接口.
但它沒(méi)法這樣告訴你它沒(méi)有真的實(shí)現(xiàn),只好用protected 方法加以警示

52. 問(wèn):一個(gè)頁(yè)面中如何刷新另外一個(gè)頁(yè)面?
答:
要求是這些面頁(yè)必須有關(guān)聯(lián),一是它們都有一個(gè)共同的頂層幀,也就是說(shuō)是一個(gè)幀內(nèi)的分級(jí)頁(yè)面,當(dāng)然可以是任意級(jí),幀內(nèi)再分幀也可以,另一個(gè)可能是當(dāng)前窗口彈出的窗口,如果沒(méi)有聯(lián)系,那就不可能用一個(gè)頁(yè)面刷新另一個(gè)頁(yè)面.
幀內(nèi)只要一級(jí)一級(jí)引用就行了.
比如在左幀中一個(gè)頁(yè)面中寫(xiě)
top.right.location.reload();那么名為right的右?guī)械捻?yè)面就會(huì)刷新.
彈出的一樣,用open時(shí)的名稱(chēng)刷新子窗口,子窗口用opener刷新主窗口

53. 問(wèn):如何在jsp中怎么樣向客戶(hù)端寫(xiě)cookies?
答:
Cookie coo = new Cookie(name, value);
HttpServletResponse.addCookie(name);

54. 問(wèn):為什么jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 得到的字體寬度不一樣?
答:就是說(shuō)如果不是指定為等寬字體,每個(gè)字體的寬度都是不一樣的.因此JAVA中用FontMetrics 類(lèi)來(lái)取字符寬度。

55. 問(wèn):String kk=application/octet-stream; name="G:/SMBCrack.exe";如何得到SMBCrack.exe?
答:
這應(yīng)該是解析上傳時(shí)候的二進(jìn)制流得到的
這一行里面格式是固定的,取到name="后面的字符串,然后把";去掉。
然后取最后一個(gè)/后面的所有字符組成一個(gè)新字符串就行了。

56. 問(wèn):如何傳值并不刷新頁(yè)面?
答:
彈出一個(gè)頁(yè)面進(jìn)行值的選擇或者輸入,ok后使用將值傳給原窗口,使用javascript關(guān)閉打開(kāi)的窗口即可:
window.close();opener.focus();


57. 問(wèn):有一個(gè)字符串:“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. 問(wèn):怎樣將一個(gè)int轉(zhuǎn)換成一個(gè)四字節(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. 問(wèn):indexOf()的使用需要注意什么?
答:參數(shù)是指從第幾位(1,2,3,...)開(kāi)始搜索,而返回值是指搜索到的位置(0,1,2,3.......)注意是從零算起的。

60. 問(wèn):在Java應(yīng)用程序中如何動(dòng)態(tài)的添加一個(gè)按鈕?
答:
這里涉及一個(gè)組件重繪的問(wèn)題,組件要先于panel被顯示之處存在,如果一panel已經(jīng)顯示了,那么加在上面你能看到嗎?但如果在同一個(gè)panel上,先有button A,假如按下它加了button B,這時(shí)你如果使整個(gè)panel重給,那么A本身要重繪,它的事件監(jiān)聽(tīng)就沒(méi)有了,當(dāng)然也就加不成B了,所以如果要先有另一個(gè)panel,當(dāng)按A時(shí)把B加在這個(gè)panel上并重繪這個(gè)paenl,其實(shí)更好的方法是先把B加在panel中,同一個(gè)也行.把它setVisiable(flase),按A時(shí)設(shè)為true。


相關(guān)文章