宣告元素<%! %>、Scriptlet元素<% %>、表示式元素<%= %>
阿新 • • 發佈:2018-12-06
宣告元素
<%! 類成員宣告或方法宣告 %>
在宣告元素中編寫的程式碼,將轉譯為Servlet中的類成員或方法。
重新定義jspInit()方法,或是在jspDestroy(),就是在宣告元素中編寫。
使用宣告元素宣告變數,必須小心資料共享與執行緒安全的問題。因為容器預設會使用同一個Servlet例項來服務不同使用者的請求,每個請求是一個執行緒,而宣告元素中宣告的變數對應至類變數成員,因此會有執行緒共享訪問的問題。
Scriptlet元素
<% Java語句 %>
Scriptlet元素包括的內容,將被轉譯為Servlet原始碼_jspService()方法中的內容。
Scriptlet出現的順序,也就是在轉譯為Servlet後,語句出現在_jspService()中的順序。
如果想禁用JSP上的Scriptlet,則可以在web.xml中設定:
<?xml version="1.1" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"View Codeversion="3.0"> <display-name>Web Application</display-name> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group></jsp-config> </web-app>
表示式元素
<%= Java表示式%>
現在時間:<%= new Date()%>
注意,表示式元素中不用加上分號(;),因為表示式元素在轉譯為Servlet之後,會在_jspService()中產生這樣的語句:out.print(new Date());