a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > JSP > 正文

JSP入門教程(4)

2024-09-05 00:20:43
字體:
供稿:網(wǎng)友
使用腳本 
在有些地方,你大概要加一些好的,成熟的程序到你的JSP頁里,JSP的標(biāo)簽雖然很強(qiáng)大,但是完成某些工作還是比較費(fèi)力的困難的。這時(shí)你可以使用腳本語言段來補(bǔ)充JSP標(biāo)簽。 
使用的JSP引擎是支持腳本語言的,SUN的JSP參考文說明,必須使用Java程序語言來編寫腳本,但是其他第三方的JSP引擎允許使用其他語言來寫腳本程。 
如何增加腳本 
首先,你必須了解一些增加腳本元素到JSP頁中的一些基本規(guī)則 
1、 在JSP頁面里用Page指令定義腳本(默認(rèn)值是Java,一般不需要定義) 
2、 聲明語法<%!……%>聲明變量和方法(函數(shù))。 
3、 表達(dá)式語法<%=……%>定義腳本語言表達(dá)式 
4、 腳本語法〈%……%>可以操作聲明、表達(dá)式和其他類型合法的代碼段在頁腳本語言。 
5、 一定要在結(jié)尾加%>標(biāo)簽 
聲明、表達(dá)式、腳本使用起來有一些相似,但也有一些不同讓我們用一些例子來講述一下相同點(diǎn)和不同點(diǎn)吧。 
聲明<%!……%>包含了一個(gè)或多個(gè)變量和方法,結(jié)尾以分號分隔。 
例:<%! Int I=0 ; %> 
<%! Int a, b ; double c ; %> 
<%! Circle a = new circle(2.0) ; %> 
在頁面中使用變量和方法之前必須聲明 
聲明的范圍通常是JSP頁,但如果頁面中使用INCLUDE指令包含其他頁面,范圍應(yīng)變得擴(kuò)展到被包含的頁面。 
表達(dá)式<%=……%>可以在頁面中包含任何合法的語言表達(dá)式,不用分號。 
例:<%= Math.sqrt(2) %> 
<%= item[I] %> 
<%= a+b+c %> 
<%= new java.util.date() %> 
表達(dá)式和腳本的一個(gè)關(guān)鍵的不同點(diǎn)就是不需要分號。如果你需要在腳本中使用表達(dá)式就必須加分號。 
腳本<%……%>允許你寫的任何數(shù)量的腳本語言 
例:<% String name=null ; 
If (request.getParmeter("name")==null{ 
%> 
記住在腳本中必須使用分號結(jié)尾。 
猜數(shù)字游戲 
猜數(shù)字游戲非常的有趣,而且從這里你還可以學(xué)到很多表達(dá)式的用法。 
代碼 
顯示用的主屏幕(numguess.jsp) 
<!-- 
Number Guess Game 
Written by Jason Hunter, CTO, K&A Software 
jasonh@kasoftware.com, http://www.servlets.com 
Copyright 1999, K&A Software 
Distributed by Sun Microsystems with permission 
--> 
<%@ page import = "num.NumberGuessBean" %> 

<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session" /> 
<jsp:setProperty name="numguess" property="*" /> 

<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> 

What's your guess? <input type=text name=guess> 
<input type=submit value="Submit"> 
</form> 
<% } %> 
</font> 
</body> 
</html> 

操作程序(NumberGuessBean.java) 
// Number Guess Game 
// Written by Jason Hunter, CTO, K&A Software 
// jasonh@kasoftware.com, http://www.servlets.com 
// Copyright 1999, K&A 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; 



在JSP文件中使用腳本 
numguess.jsp是一個(gè)非常有趣兒的用腳本寫的例子,你看他的結(jié)構(gòu)其實(shí)是一個(gè)很大的IF……ELSE結(jié)構(gòu),但是很一個(gè)從句又都是用HTML寫的,看起來象一個(gè)大的程序段。 
不過你也不一定非得象numguess.jsp那樣用HTML和JSP標(biāo)簽一起來寫腳本。在<%和%>標(biāo)簽之間,你可以寫任意多行的腳本代碼,在通常情況下,盡量少用腳本來處理程序,而盡可能的使用servlets或者Beans,這樣你的程序看起來會(huì)非常的清析,明了。話又說回來,怎么寫JSP還得根據(jù)你的習(xí)慣和愛好,我不強(qiáng)迫非得使用任何一種方法,SUN的JSP詳細(xì)說明書不規(guī)定腳本的長度。 

用標(biāo)簽組合腳本 
使用HTML和JSP標(biāo)簽來寫腳本的時(shí)候,注意前后的標(biāo)簽不要忘記,一定要“封”好。說的不明白,舉個(gè)例子吧: 
<% } else { %> <!-- 用JSP標(biāo)簽的時(shí)候先關(guān)上 --> 

... 這時(shí)候用JSP標(biāo)簽吧 ... 

<% } %> <!-- 這樣你應(yīng)該看懂了吧?! --> 
開始的時(shí)候這種做法看起來可能有一點(diǎn)奇怪,但它以確保你JSP文件編譯的時(shí)候腳本的成功轉(zhuǎn)換。 

那么,腳本什么時(shí)候執(zhí)行呢? 
一個(gè)JSP原文件的處理分為兩個(gè)階段:一個(gè)是HTTP的編譯時(shí)候,一個(gè)是請求的處理時(shí)間。 

HTTP編譯的時(shí)候,當(dāng)用戶第一次讀JSP頁面的時(shí)候,JSP的原代碼被編譯成CLASS,通常是servlet。HTML標(biāo)簽和JSP標(biāo)簽在這個(gè)時(shí)候同時(shí)被處理了,這之前用戶還沒有任何的請求被提交。 

請求處理時(shí)間是當(dāng)用戶在JSP頁面中提交了一個(gè)請求,這時(shí)請求由客戶端被request對象傳到了服務(wù)器端,JSP引擎根據(jù)用戶提交的值執(zhí)行編譯過的JSP文件或者servlet。 

當(dāng)你在JSP頁中使用腳本的時(shí)候,你必須知道他們什么時(shí)候被執(zhí)行。聲明在HTTP編譯階段就已經(jīng)被處理了,其他腳本,表達(dá)式在編譯JSP文件的時(shí)候也可用。表達(dá)式在HTTP編譯的時(shí)候也被執(zhí)行了。表達(dá)式的值被轉(zhuǎn)換成了字符串被插入到JSP文件中一塊兒被編譯。其實(shí)在請求階段,腳本也是可以利用的。 

如何運(yùn)行例子 
我現(xiàn)在給出的都是在UNIX風(fēng)格下的路徑,如果你用Windows,那么改成Windows風(fēng)格路徑 
1、猜數(shù)字游戲在裝TOMCAT或者JSWDK的時(shí)候就已經(jīng)裝好了。 
2、.jsp和.html文件在../jswdk-1.0.1/examples/num中 
3、.java和.class文件在../jswdk-1.0.1/examples/WEB-INF/jsp/bean/num中 
4、開瀏覽器,http://機(jī)器名/examples/jsp/num/numguess.jsp
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人毛片免费在线观看 | 中文字幕在线看第二 | 全免费一级毛片免费看 | 色综合久久久久 | 日韩成人免费电影 | 噜噜av| 激情欧美一区二区三区中文字幕 | www.久久久.com | 国产精品乱码一区二区三区 | 日本久久精品视频 | 久久成人精品视频 | 成人一区电影 | 欧美一区二区在线免费观看 | 国产人久久人人人人爽 | 91久久精品一区 | 日韩综合一区 | 欧日韩在线观看视频 | 久久精品午夜 | 日日骑夜夜操 | 亚洲欧美日韩精品 | 污网址在线观看 | 人人插人人干 | 一级免费毛片 | 97国产一区二区精品久久呦 | 艹逼视频在线免费观看 | 色综合天天 | 欧美日日操 | 九九av| 四虎www| 亚洲日本午夜 | 日本激情网 | 4hu在线 | av网站在线免费观看 | 欧美亚洲 | 91精品一区二区三区在线观看 | 久久久久久久久久一本门道91 | 精品国产精品国产偷麻豆 | 韩日视频在线观看 | 国内成人免费视频 | 欧美一区二区三区在线视频 | 久综合在线 |