声明元素<%! %>、Scriptlet元素<% %>、表达式元素<%= %>、注释元素、输出特殊符号<%和%>
声明元素
<%! 类成员声明或方法声明 %>
在声明元素中编写的代码,将转译为Servlet中的类成员或方法。
重新定义jspInit()方法,或是在jspDestroy(),就是在声明元素中编写。
使用声明元素声明变量,必须小心数据共享与线程安全的问题。因为容器默认会使用同一个Servlet实例来服务不同用户的请求,每个请求是一个线程,而声明元素中声明的变量对应至类变量成员,因此会有线程共享访问的问题。
Scriptlet元素
<% Java语句 %>
Scriptlet元素包括的内容,将被转译为Servlet源代码_jspService()方法中的内容。
Scriptlet出现的顺序,也就是在转译为Servlet后,语句出现在_jspService()中的顺序。
如果想禁用JSP上的Scriptlet,则可以在web.xml中设置:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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>
表达式元素
<%= Java表达式%>
现在时间:<%= new Date()%>
注意,表达式元素中不用加上分号(;),因为表达式元素在转译为Servlet之后,会在_jspService()中产生这样的语句:out.print(new Date());
注释元素
1、java注释
在<%与%>之间可以直接使用 // 或 /*与*/ 的方式编写注释。
2、html注释
在写html的地方,直接使用<!-- -->的方式编写注释。
在转译为Servlet之后,会产生这样的一行语句:out.write("<!-- 网页注释 -->");
这个注释会输出至浏览器,在查看HTML源代码时,就可以看到。
3、JSP注释
<%-- JSP 注释 --%>
生成的Servlet中不会包括这个注释,也不会输出至浏览器。
输出特殊符号<%和%>
如果要在JSP网页中输出<%符号或%>符号,不能直接写<%或%>,以免转译时被误为是某个元素的起始或结尾符号。
例如,若JSP网页中包括下面这段,就会发生错误:
<% out.println("JSP 中 Java 語法結束符號 %>"); %>
<% 使用 <%;
%> 使用 %> 或 %\>
<% out.println("<%與%\>被用來作為 JSP 中 Java 語法的部份"); %>