zoukankan      html  css  js  c++  java
  • 声明元素<%! %>、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 語法的部份"); %>
  • 相关阅读:
    Go语言:如何解决读取不到相对路径配置文件问题
    Go组件学习:如何读取ini配置文件
    PMP学习笔记(一)
    SpringBoot安装与配置
    Homebrew中国镜像安装与配置
    Nginx日志常见时间变量解析
    openresty如何完美替换nginx
    Golang防止多个进程重复执行
    Windows 10 中CPU虚拟化已开启,但是docker无法运行
    彻底理解Python多线程中的setDaemon与join【配有GIF示意】
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/10080234.html
Copyright © 2011-2022 走看看