使用腳本 在有些地方,你大概要加一些好的,成熟的程序到你的JSP頁里,JSP的標簽雖然很強大,但是完成某些工作還是比較費力的困難的。這時你可以使用腳本語言段來補充JSP標簽。 使用的JSP引擎是支持腳本語言的,SUN的JSP參考文說明,必須使用Java程序語言來編寫腳本,但是其他第三方的JSP引擎允許使用其他語言來寫腳本程。 如何增加腳本 首先,你必須了解一些增加腳本元素到JSP頁中的一些基本規(guī)則 1、 在JSP頁面里用Page指令定義腳本(默認值是Java,一般不需要定義) 2、 聲明語法%!……%>聲明變量和方法(函數(shù))。 3、 表達式語法%=……%>定義腳本語言表達式 4、 腳本語法〈%……%>可以操作聲明、表達式和其他類型合法的代碼段在頁腳本語言。 5、 一定要在結(jié)尾加%>標簽 聲明、表達式、腳本使用起來有一些相似,但也有一些不同讓我們用一些例子來講述一下相同點和不同點吧。 聲明%!……%>包含了一個或多個變量和方法,結(jié)尾以分號分隔。 例:%! Int I=0 ; %> %! Int a, b ; double c ; %> %! Circle a = new circle(2.0) ; %> 在頁面中使用變量和方法之前必須聲明 聲明的范圍通常是JSP頁,但如果頁面中使用INCLUDE指令包含其他頁面,范圍應變得擴展到被包含的頁面。 表達式%=……%>可以在頁面中包含任何合法的語言表達式,不用分號。 例:%= Math.sqrt(2) %> %= item[I] %> %= a+b+c %> %= new java.util.date() %> 表達式和腳本的一個關鍵的不同點就是不需要分號。如果你需要在腳本中使用表達式就必須加分號。 腳本%……%>允許你寫的任何數(shù)量的腳本語言 例:% String name=null ; If (request.getParmeter("name")==null{ %> 記住在腳本中必須使用分號結(jié)尾。 猜數(shù)字游戲 猜數(shù)字游戲非常的有趣,而且從這里你還可以學到很多表達式的用法。 代碼 顯示用的主屏幕(numguess.jsp) !-- Number Guess Game Written by Jason Hunter, CTO, KA Software jasonh@kasoftware.com, http://www.servlets.com Copyright 1999, KA Software Distributed by Sun Microsystems with permission --> %@ page import = "num.NumberGuessBean" %>
html> head>title>Number Guess/title>/head> body bgcolor="white"> font size=4>
% if (numguess.getSuccess() ) { %>
Congratulations! You got it. And after just %= numguess.getNumGuesses() %>tries.p>
% numguess.reset(); %> Care to a href="numguess.jsp">try again/a>?
% } else if (numguess.getNumGuesses() == 0) { %>
Welcome to the Number Guess game.p> I'm thinking of a number between 1 and 100.p>
form method=get> What's your guess? input type=text name=guess> input type=submit value="Submit"> /form>
% } else { %> Good guess, but nope. Try b>%= numguess.getHint() %>/b>. You have made %= numguess.getNumGuesses() %> guesses. p>I'm thinking of a number between 1 and 100. p>form method=get>
操作程序(NumberGuessBean.java) // Number Guess Game // Written by Jason Hunter, CTO, KA Software // jasonh@kasoftware.com, http://www.servlets.com // Copyright 1999, KA Software // Distributed by Sun Microsystems with permission
package num; import java.util.*; public class NumberGuessBean { int answer; boolean success; String hint; int numGuesses; public NumberGuessBean() { reset(); } public void setGuess(String guess) { numGuesses++; int g; try { g = Integer.parseInt(guess); } catch (NumberFormatException e) { g = -1; } if (g == answer) { success = true; } else if (g == -1) { hint = "a number next time"; } else if (g answer) { hint = "higher"; } else if (g > answer) { hint = "lower"; } } public boolean getSuccess() { return success; } public String getHint() { return "" + hint; } public int getNumGuesses() { return numGuesses; } public void reset() { answer = Math.abs(new Random().nextInt() % 100) + 1; success = false; numGuesses = 0; } }