声明元素<%! %>、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());


注释元素

1、java注释

  在<%与%>之间可以直接使用 // 或 /*与*/ 的方式编写注释。

2、html注释
  在写html的地方,直接使用<!--  -->的方式编写注释。
  在转译为Servlet之后,会产生这样的一行语句:out.write("<!-- 网页注释 -->");
  这个注释会输出至浏览器,在查看HTML源代码时,就可以看到。

3、JSP注释
  <%-- JSP 注释 --%>
  生成的Servlet中不会包括这个注释,也不会输出至浏览器。


输出特殊符号<%和%>

  如果要在JSP网页中输出<%符号或%>符号,不能直接写<%或%>,以免转译时被误为是某个元素的起始或结尾符号。
  例如,若JSP网页中包括下面这段,就会发生错误:

<% out.println("JSP 中 Java 語法結束符號 %>"); %>

  <% 使用 &lt;%;
  %> 使用 %&gt; 或 %>

<% out.println("&lt;%與%>被用來作為 JSP 中 Java 語法的部份"); %>
原文地址:https://www.cnblogs.com/Mike_Chang/p/10080234.html