大家都知道程序員要做的事情就是和計算機進行對話,從而實現我們想要實現的功能,其實程序員學習JSP的時候是因為技能的需要,今天這篇文章是錯新技術頻道給大家整理的初學者學習jsp的心得,一起來了解吧!
初學jsp心得
1。java是大小寫敏感的,用過其他編程語言的人最容易犯這個錯誤,尤其是剛上手的時候。我剛開始調試jsp的時50%以上的編譯錯誤是都是因為這個。?
2。java的調用過程都是要加括號的,一開始比較容易忽視,如title=request.getParameter("title").trim();?
3。jsp中對應asp中的request.form()和request.querystring()的解決方法。?
jsp中取得參數沒有form和queryString之分,都是通過request.getParameter("XXXX")來取得。雖然jsp也有request.getQueryString()方法,但測試結果是 test.jsp?id=1&page=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 {?
? ? ? ? Class.forName(sDBDriver); ??
? }?
? ? catch(java.lang.ClassNotFoundException e) ? {?
? ? out.print("faq(): " + e.getMessage());?
? }?
? try{?
? ? conn = DriverManager.getConnection(sConnStr,"wsdemo","wsdemo1"); ? ??
? ? stmt = conn.createStatement();?
? }catch(SQLException e){?
? ? out.print(e.toString());?
? }?
%>?
query.jsp?
<%@ page language="java" import="java.sql.*" %>?
<%@ page contentType="text/html; charset=gb2312" %>?
<%@ include file="conn.jsp" %>?
<%?
.......?
int pages=0;?
int pagesize=10;?
ResultSet result = null;?
ResultSet rcount = null;?
pages = new Integer(request.getParameter("pages")).intValue();?
if (pages>0)?
{?
String sql=" state='我不傻'";?
int count=0;?
try {?
rcount = stmt.executeQuery("SELECT count(id) as id from user where "+sql);?
catch(SQLException ex) {?
out.print("aq.executeQuery: " + ex.getMessage());?
}?
if(rcount.next())?
count = rcount.getInt("id");?
rcount.close();?
if (count>0)?
{ ?
sql="select * from user where "+sql;?
try {?
result = stmt.executeQuery(sql);?
? } ?
catch(SQLException ex) {?
out.print("aq.executeQuery: " + ex.getMessage());?
}?
int i;?
String name;?
// result.first();?
// result.absolute((pages-1)*pagesize);?
// 此方法jdbc2.0支持。編譯通過,但執行不過,不知是不是跟驅動有關,只好用下面的笨辦法。?
for(i=1;i<=(pages-1)*pagesize;i++)?
result.next();?
for(i=1;i<=pagesize;i++) {?
if (result.next()) {?
name=result.getString("name");?
out.print(name);?
}?
result.close();?
int n= (int)(count/pagesize);?
if (n*pagesize<count) n++;?
if (n>1)?
{?
for(i=1;i<=n;i++)?
? out.print("<a href=query.jsp?pages="+i+">"+i+" </a>");?
}?
}?
}?
%>?
以上就是錯新技術頻道小編為大家整理的初學者學習jsp的心得,希望大家繼續支持錯新技術頻道!
新聞熱點
疑難解答