1. 程式人生 > >宣告元素<%! %>、Scriptlet元素<% %>、表示式元素<%= %>

宣告元素<%! %>、Scriptlet元素<% %>、表示式元素<%= %>

宣告元素

  <%! 類成員宣告或方法宣告 %>
  在宣告元素中編寫的程式碼,將轉譯為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"
version="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>
View Code

表示式元素

  <%= Java表示式%>

現在時間:<%= new Date()%>

  注意,表示式元素中不用加上分號(;),因為表示式元素在轉譯為Servlet之後,會在_jspService()中產生這樣的語句:out.print(new Date());