聲明和腳本的區(qū)別
下面這個(gè)是聲明,去掉感嘆號(hào)報(bào)錯(cuò)
<%!
? ?String s="張三";
? ?int add(int x,int y){
? ? ? ?return x+y;
? ?}
%>
下面這個(gè)算是腳本吧?就這樣不報(bào)錯(cuò)可以運(yùn)行,但是改成聲明標(biāo)簽后也可以正常運(yùn)行
<%
? ?SimpleDateFormat sdf=new SimpleDateFormat("YYYY年MM月D日");
? ?String s1=sdf.format(new Date());
%>
那么聲明和腳本的界限是什么?只討論聲明和腳本,不需要
2017-04-13
1:聲明:舉個(gè)栗子簡(jiǎn)單的servlet單例,聲明相當(dāng)于一個(gè)獨(dú)一無(wú)二的成員變量時(shí),每個(gè)用戶可訪問,可能在后續(xù)編寫時(shí)會(huì)相互的影響。<%!%>,可以定義方法,不能使用隱含對(duì)象;
2:腳本:簡(jiǎn)單來說時(shí)一段java代碼,每個(gè)用戶各一份不會(huì)相互影響。<% %>,可以使用隱含對(duì)象,但不能定義方法。兩者相同點(diǎn)在于都可以定義變量和類。
所以綜上,你第一個(gè)栗子里面有涉及到方法所以不能將聲明改寫為腳本所以結(jié)果報(bào)錯(cuò);第二個(gè)栗子,因?yàn)閮烧叨伎梢远x變量和類,所以第二個(gè)成腳本和聲明都沒太大差別,所以不報(bào)錯(cuò)。
來自java初學(xué)者的解答,如果說的不對(duì)別放在心上,當(dāng)作開拓思路了哈。
2017-04-13
腳本是將代碼插入到servlet的service中,相當(dāng)于JAVA代碼,而聲明則是將聲明的變量或方法加入到servle類中。你應(yīng)該是用這些變量的范圍用錯(cuò)了吧?