JSP學習心得

1。java是大小寫敏感的,用過其他編程語言的人最容易犯這個錯誤,尤其是剛上手的時
候。我剛開始調試jsp的時50%以上的編譯錯誤是都是因爲這個。

2。java的調用過程都是要加括號的,一開始比較容易忽視,如title=request.getParam
eter("title").trim();

3。jsp中對應asp中的request.form()和request.querystring()的解決方法。
jsp中取得參數沒有form和queryString之分,都是通過request.getParameter("XXXX")來
取得。雖然jsp也有request.getQueryString()方法,但測試結果是 test.jsp?id=1&pag
e=20 得到 id=1&page=20。
如果url和form有相同的參數名稱呢?下面是一段測試代碼:
<form method="POST" action="query.jsp?id=2">
<input type="text" name="id" value="1" size="60">
</form>
name都是id,結果是url的參數優先得到,jsp的這種處理方式和asp相比我覺的各有所長


4。頭疼的漢字處理問題。
在其他的文章裏曾說到在中文NT環境下如下語句輸出會得到亂碼,
<%="你好"%> 及 out.print("你好");等。解決方法是隻要對字符串變量進行編碼就可以
得到正確結果,如下代碼可以得到正確的輸出:
<% String title="你好";
byte[] tmpbyte=title.getBytes("ISO8859_1");
title=new String(tmpbyte);
out.print(title); %>
或者<%=title%>

關於sql語句漢字問題,例句爲 select * from test where title='誰是傻瓜'
在jdbc-odbc驅動下連db2,不管是原句還是對sql語句進行編碼後都死活通不過。
換了ibm的jdbc直接驅動後,對sql語句編碼後程序可以通過。

這個問題的產生大概是中文NT的原因,在其他環境下可能就沒漢字處理問題了,據說ibm
的web sphere對中文支持的很好,這也給jsp的開發帶來一定的通用性問題。據說對字符
串編碼是一種通用的解決方法,不過沒有這麼多環境來測試。

5。在asp中經常使用到字符串判斷語句如 if state="真是傻瓜" then.....
在java中String變量不是一個簡單的變量而是一個類實例,不同的方法會得到不同的結果
a.
String str1="我是傻瓜";
String str2="我是傻瓜"; (or String str2="我是"+"傻瓜"; )
if (str1==str2)
out.print("yes");
else
out.print("no");
結果是"yes"。
大概是編譯優化,str1,str2指向同一個類實例;

b.
String str1,str2,str3;
str1="我是傻瓜";
str2="我是";
str3=str2+"傻瓜";
if (str1==str3)
out.print("yes");
else
out.print("no");
結果是"no"。

String str1=new String("我是傻瓜");
String str2=new String("我是傻瓜");
if (str1==str2)
out.print("yes");
else
out.print("no");
結果是"no"。

String str1=new String("我是傻瓜");
String str2=new String("我是傻瓜");
if (str1.compareTo(str2)==0)
out.print("yes");
else
out.print("no");
結果是"yes"。

所以在jsp中判斷字符串要使用compareTo方法,用慣傳統語言還真一下子適應不過來,熟
悉java的朋友應該沒這個問題。

6。如何判斷數據庫爲空?
result = stmt.executeQuery(sql);
if (result.next())
......
result執行後遊標出於一個未明的狀態,不能進行狀態判斷,也不能取值,一定要next(
)一下纔可以用。


7。在jsp中實現分頁。
page是關鍵字,不能當變量。
conn.jsp
<%
String sDBDriver = "COM.ibm.db2.jdbc.app.DB2Driver";
String sConnStr = "jdbc:db2:faq";
Connection conn = null;
Statement stmt = null;
ResultSet rs=null;
try
catch(java.lang.ClassNotFoundException e) {
out.print("faq(): " + e.getMessage());
}

try{
conn = DriverManager.getConnection(sConnStr,"wsdemo","wsdemo1");
stmt = conn.createStatement();
}catch(SQLException e)
%>

query.jsp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章