什么是Scriptlet?
在JSP中,Scriptlet稱為腳本小程序,所有嵌套在HTML代碼中的Java程序都必須使用Scriptlet標記出來。
第一種:<% %>
在此Scriptlet中可以定義局部變量(並非全局變量)編寫語句
例如:
<%
int x=10;
out.println("<p>x="+x+"</P>");
%>
<%
out.println("<p>x="+x+"</P>");
%>
初學JSP者看到上面這段代碼可能會覺得陌生又熟悉,那是因為這完全就是java代碼,卻又輸出了HTML語句,沒錯!這就是使用java語句在網頁上顯示"x=10"
第二次在網頁上顯示變量x時,同樣是"x=10",小編以前以為<% %>里面定義的變量是局部變量所以出了<% %>就會報錯,但其實不是,想想Java中對局部變量的定義,局部變量存在在一個方法中或者以個代碼塊中,如果上面的<% %>全部去掉,是不是像Java中的一個代碼塊了呢?所以第二次輸出也是正確的。
第二種:<%! %>
在這種Scriptlet中可以定義全局變量,方法,類
<%!public static final String info = "www.baidu.com";//定義全局變量
public int add(int a, int b) {//定義方法
return a + b;
}
class Person {//定義類
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "name=" + this.name + "\tage=" + this.age;
//在此方法中不可以有輸出語句
}
}%>
<%
out.println("<p>info=" + info + "</p>");
out.println("<p>3+5=" + add(3, 5) + "</p>");
out.println("<p>個人信息:" + new Person("張三", 12).toString() + "</p>");
%>
網頁上顯示結果:

第三種:<%=%>
在此Scriptlet中輸出一個變量或一個具體的常量,稱為表達式輸出
將上面的輸出形式換成下面的輸出形式:
<p>info=<%=info %></p>
<p>3+5=<%=add(3,5) %></p>
<p>個人信息:<%=new Person("張三",12).toString() %></p>
將得到同樣的效果.
那么問題來了,既然這兩種輸出形式的效果一樣,那么以后是不是隨便寫那個都可以呢?
盡量不要使用out.println();輸出,而使用表達式輸出
在jsp的開發中,實際上就是在HTML中加入一些控制及輸出的語句,所以在輸出時為了使HTML代碼和Java代碼相分離,最好的做法是只輸出由Java(JSP)程序產生的變量,那么這時使用表達式輸出就比使用out.println()更加方便.
小編還在學習階段,如果有寫的不好的地方,請大神指教O(∩_∩)O~~
