zoukankan      html  css  js  c++  java
  • JSP 指令 脚本元素 表达式 声明

    一.page指令

    1. 可以使用page指令来控制JSP转换器转换当前JSP页 面的某些方面。例如,可以告诉JSP用于转换隐式对象 out的缓冲器的大小、内容类型,以及需要导入的Java 类型,等等。 page指令的语法如下:

    <%@ page attribute1="value1" attribute2="value2" %>

    2. @和page间的空格不是必须的,attribute1、 attribute2等是page指令的属性。如下是page指令属性的 列表:

    • import 导入j'ava类
    • session 值为true:本页面加入会话管理;  值为false则相反;默认值为True,访问该页面时,若当 前不存在javax.servlet.http.HttpSession实例,则会创 建一个。
    • buffer 以KB为单位,定义隐式对象out的缓冲大 小。必须以KB后缀结尾。默认大小为8KB或更大 (取决于JSP容器)。该值可以为none,这意味着没 有缓冲,所有数据将直接写入PrintWriter。
    • autoFlush 默认为true,自动刷新缓冲区,若为false,则只有调用隐式对象flush时才会刷新 
    • isThreadSafe:定义该页面的线程安全级别。不推荐 使用 JSP 参数,因为使用该参数后,会生成一些 Servlet容器已过期的代码。
    • info:返回调用容器生成的Servlet类的getServletInfo 方法的结果。
    • errorPage: 定义当页面出错时,用来处理错误的页面
    • isErrorPage: 标识页面是一个错误处理页面
    • contentType: 定义本页面隐式对象response的内容 类型,默认是text/html。
    • pageEncoding: 定义本页面的字符编码,默认是 ISO-8859-1。
    • isELIgnored: 配置是否忽略EL表达式。EL是 Expression Language的缩写。
    • language: 定义本页面的脚本语言类型,默认是 Java,这在JSP 2.2中是唯一的合法值。
    • extends: 定义JSP实现类要继承的父类。这个属性 的使用场景非常罕见,仅在非常特殊理由下使用。
    • deferredSyntaxAllowedAsLiteral:定义是否解析字符 串中出现“#{”符号,默认是False。“{# ”是一个表达 式语言的起始符号。
    • trimDirectiveWhitespaces:定义是否不输出多余的空 格/空行,默认是False。

    二. include

    1. 可以使用include指令将其他文件中的内容包含到当 前JSP页面。一个页面中可以有多个include指令。若存 在一个内容会在多个不同页面中使用或一个页面不同位 置使用的场景,则将该内容模块化到一个include文件非 常有用。 include指令的语法如下:

    <%@ include file ="url" %>

    其中,@和include间的空格不是必须的,URL为被 包含文件的相对路径,若URL以一个斜杠(/)开始, 则该URL为文件在服务器上的绝对路径,否则为当前 JSP页面的相对路径。

    例如: 下面include.html 里的内容 将插入到include所在位置

    <!-- include.html -->
    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <p> this is include page </p> </body> </html>
    <%-- newFile.jsp %-->
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> //这里会插入include.html的内容 </head> <body> <%@ include file="/WEB-INF/include.html" %> </body> </html>

    三. 脚本元素

    一个脚本程序是一个Java代码块,以<% 开始, 以%>结束;定义在一个脚本中的变量可以在另一个脚本程序中使用

    四.表达式

    每个表达式都会被容器执行,并使用隐式对象out的打印方法输出结果,表达式以"<%="开始以 "%>"结束,例如,在下面一行文中,黑体字为一个 表达式:

    Today is <%=java.util.Calendar.getInstance().getTime()%>

     注意,表达式无须分号结尾。 JSP容器首先执行 java.util.Calendar.getInstance().getTime(),并将计算结果 传递给out.print(),这与如下脚本程序的效果一样:

    Today is
    <%
    out.print(java.util.Calendar.getInstance().getTime());
    %>

    五.声明

    1.可以声明能在JSP页面中使用的变量和方法。声明 以“<%!”开始,并以“%>”结束。例如,清单3.7的 declarationTest.jsp页面展示了一个JSP页面,该页面声 明了一个名为getTodaysDate的方法。

    <%!
    public String getTodaysDate() {
    return new java.util.Date();
    }
    %>
    <html>
    <head><title>Declarations</title></head>
    <body>
    Today is <%=getTodaysDate()%>
    </body>
    </html>

    2.在JSP页面中,一个声明可以出现在任何地方,并 且一个页面可以有多个声明。

     三.使用声明

    可以使用声明来重写JSP页面,实现类的init和 destroy方法。通过声明jspInit方法,来重写init方法。通 过声明jspDestroy方法,来重写destory方法。这两种方 法说明如下:

    • jspInit。这种方法类似于 javax.servlet.Servlet 的 init 方法。JSP 页面在初始化时调用jspInit。不同于init 方法,jspInit没有参数。还可以通过隐式对象config 访问ServletConfig对象。
    • jspDestroy。这种方法类似于Servlet的destroy方法, 在JSP页面将被销毁时调用。
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"  %>
    <%@ page import="java.text.DateFormat" %>
    <%!
        public String getTodaysDate(){
                    return DateFormat.getDateInstance(DateFormat.LONG).format(new java.util.Date());
    }
    %>
    <%!
        public void jspInit(){
        System.out.println("jspInit ...");
    }
        public void jspDestory(){
            System.out.println("jspDestory()");
        }
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <p></p>
    Today is  <%=getTodaysDate() %>
    </body>
    </html>

    生成的servlet页面

    <%--部分页面 %-->
    public
    final class NewFile_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent, org.apache.jasper.runtime.JspSourceImports { public String getTodaysDate(){ return DateFormat.getDateInstance(DateFormat.LONG).format(new java.util.Date()); } public void jspInit(){ System.out.println("jspInit ..."); } public void jspDestory(){ System.out.println("jspDestory()"); } private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private static final java.util.Set<java.lang.String> _jspx_imports_packages; private static final java.util.Set<java.lang.String> _jspx_imports_classes; static { _jspx_imports_packages = new java.util.HashSet<>(); _jspx_imports_packages.add("javax.servlet"); _jspx_imports_packages.add("javax.servlet.http"); _jspx_imports_packages.add("javax.servlet.jsp"); _jspx_imports_classes = new java.util.HashSet<>(); _jspx_imports_classes.add("java.text.DateFormat"); } private volatile javax.el.ExpressionFactory _el_expressionfactory; private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() { return _jspx_dependants; }

    六.禁用脚本元素

    随着JSP 2.0对表达式语言的加强,推荐的实践是: 在JSP页面中用EL访问服务器端对象且不写Java代码。 因此,从JSP 2.0起,可以通过在部署描述符中的定义一个scripting-invalid元素,来禁用 脚本元素。

        <jsp-config>
            <jsp-property-group>
                <url-pattern>*.jsp</url-pattern>
                <scripting-invalid>true</scripting-invalid>
            </jsp-property-group>
        </jsp-config>
  • 相关阅读:
    攻防世界wp--web robots
    kubernetes二: kubernetes 重要组件安装和集群管理
    kibana配置页面跳转
    二进制安装的k8s添加新的node节点
    分布式和微服务的区别
    kubernetes一: 二进制安装k8s集群
    kibana导入导出dashborad
    elk 创建一个只读用户
    x-pack模式下修改es集群密码
    docker基础命令
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10677976.html
Copyright © 2011-2022 走看看