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