• JSP 编译指令


    JSP 指令

    指令元素

    <%@指令名 属性名=“”属性值“”%>

    page 指令

    <%@ page ... %>
    定义页面的依赖属性和相关功能,允许通过类的导入、servlet 超类的定制、内容类型的设置、以及诸如此类的事物来控制 servlet 的结构。page 指令可以放在文档中的任何地方,作用的都是整个 jsp 页面,比如脚本语言、error 页面、缓存需求等等。如:
    1、language 属性,设置 JSP 页面使用的语言。
    2、contentType 属性,设置 JSP 页面 MIME 类型和字符编码,浏览器使用。
    3、pageEncoding 属性,JSP 页面的文件编码格式。
    ( contentType 属性设置发送到客户端文档的响应报头的 MIME 类型和字符编码。多个使用;号分开。pageEncodeing 属性只用于更改字符编码。servlet 默认 MIME 是 text/plain,jsp 默认 MIME 是 text/html。)
    代码示例:

    <%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
    

    4、import 属性,设置 JSP 页面导入的类包(多个用逗号隔开)。
    代码示例:

    <%@ page import="java.util.List, java.io.PrintWriter, ..." %>
    

    (前四个常用,以下不常用)
    5、extends 属性,设置 JSP 页面继承的 Java 类,使用默认值就好,最好不要改动。
    代码示例:

    <%@ page extends="XXXXX" %>
    

    6、session 属性,true/false,true 当前 jsp 可以使用 session,false 当前页面不能使用 session。
    --- 默认 true。如果存在已有会话,则预定义 session 变量,绑定到已有会话中。否则创建新会话将其绑定到 session。
    --- 对于高流量网站,设置 false 可以节省大量服务器内存。
    --- 设置 false 表示不自动创建新会话,在 jsp 页面转换为 servlet 时,这时对变量 session 的访问导致错误。
    --- 设置为 false 并不是禁用会话跟踪,它只是阻止 jsp 页面为不拥有会话的用户创建新会话。
    --- 对于不需要会话跟踪的页面那就设置为 false;当设置为 false 时 session 对象是不可访问的。
    代码示例:

    <%@ page session="true" %>
    

    7、buffer 属性,设置 JSP 的 out 输出对象(JspWriter)的缓冲区大小,默认 8KB。单位只能使用 KB,最好设置为8的倍数,默认 8kb。
    --- none 表示不使用缓冲区。这样要求设置报头或状态代码的 jsp 元素要出现在文件的顶部,任何HTML内容之前。
    代码示例:

    <%@ page buffer="8kb" %>
    <%@ page buffer="none" %>
    

    8、autoFlush 属性,如果设置为 false,缓存被填满时将抛出异常。
    --- autoFlush 属性控制当缓冲区满了后,是自动清空输出缓冲区(默认 true),还是在缓冲区溢出后抛出异常(false)。在 buffer=none 的时候,autoFlush=false 是错误的。
    代码示例:

    <%@ page autoFlush="true" %>
    

    9、isErrorPage 属性,将当前 JSP 页面设置为错误处理页面。
    代码示例:

    <%@ page isErrorPage="true" %>
    

    10、errorPage 属性,设置处理当前 JSP 页面异常错误的另一个 JSP 页面。
    代码示例:

    <%@ page errorPage="error/errorPage.jsp" %>
    

    11、isELlgnored 属性,定义在 jsp 页面中是否执行或忽略 EL 表达式。true 表示忽略,false 表示执行。
    --- 默认值依赖于 web.xml 的版本。servlet2.3 之前默认 true,servlet2.4 默认 false。
    --- 用于 JSP 版本不一致造成使用 EL 表达式出现的问题。使用:isELlgnored="true"。
    代码示例:

    <%@ page isELlgnored="true" %>
    

    12、info 属性,定义一个可以在 servlet 中通过 getServletInfo 方法获取的字符串。
    --- jsp 容器做的是在 servlet 中生成 getServletInfo 方法,返回 info 属性指定的 String。
    --- 此值可设置为任意字符串,由 Servlet.getServletInfo() 方法来获取所设置的值。

    <%@ page info="Some Message" %>
    
    include 指令
    • 语法:<%@ include file=“path”%>
    • 概述
      1、该指令只有一个file属性,用于指定要包含文件的路径,导入包含静态的文件。
      2、如 JSP 网页文件、HTML网页文件、文本文件。
      3、该路径可以是相对路径,也可以是绝对路径,但不可以是<%= %>表达式所表示的文件。
      4、在被包含和被包含的文件中不能用相同名称的变量。
      5、include 中 file 属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(不是站点根目录,否则,表示相对于当前文件)。
    • 静态包含和动态包含的区别:
      1、语法不同
      静态包含:<%@ include file=“path”%>
      动态包含:<JSP:include page=“path”>
      2、参数传递不同
      静态包含不能像包含页面传递 参数
      动态包含可以使用 jsp:param 标签像被包含页面传递参数
      3、原理不同
      静态包含:先合并再翻译
      动态包含:先翻译再合并
    • 路径使用

    1、根目录对根目录的链接方式
    在 index.jsp 中显示 indexTwo.jsp 中的内容(‘ / ’表示是根目录):

    <%@inclue file="/indexTwo.jsp" />
    

    2、根目录对子文件夹的链接方式
    在 index.jsp 中显示 menu 文件夹中的 head.jsp 内容(根目录下的 menu 文件夹里的 head.jsp ):

    <%@inclue file="/menu/head.jsp" />
    

    3、子文件夹对子文件夹的链接方式
    在 foot.jsp 中导入 head.jsp(都在根目录下的 menu 文件夹里):

    <%@inclue file="/menu/head.jsp"/>
    <%--或者--%>
    <%@inclue file="head.jsp" />
    

    4、子文件夹对根目录的链接方式
    在 foot.jsp 中导入根目录下的 index.jsp 文件( foot.jsp 在根目录下的 menu 文件夹里):

    <%@inclue file="/index.jsp" />
    
    taglib 指令

    <%@ taglib uri="uri" prefix="tagPrefix" %>
    1、URI 指明标签库文件的存放位置。prefix 表示该标签使用时的前缀。
    2、用于引入标签库的定义,可以是自定义标签(JSP标记),一个自定义标签库就是自定义标签的集合。
    3、当一个含有自定义的 tag 标签的 JSP 页面被 jsp 引擎编译成 servlet 时,tag 标签被转化成了对一个称为 tag 处理类的对象进行的操作。当 JSP 页面被 jsp 引擎转化为 servlet 后,实际上 tag 标签被转化成为了对 tag 处理类的操作。

    • 特点
      1、taglib可以在JSP页面中自定义tag标签的属性,并且访问JSP页面中的所有对象 。
      2、taglib可以动态地修改页面输出,同时彼此之间相互通信。
      3、taglib可以先创建一个JavaBeans组件,然后在一个tag中调用此JavaBeans组件,同时可以在另一个tag中调用它。
      4、taglib可以相互嵌套,可以在一个JSP页面中完成一些复杂的交互。

    脚本元素

    脚本片段:<% %>

    1、脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。
    2、其中写的内容会翻译在 Servlet 的 Service 方法中,显然我们可以在 Service 方法中定义局部变量或者调用其他方法,但是不能在 Service 中再定义其他的方法。
    3、也就是我们可以在<% %>中定义局部变量或者调用方法,但不能定义方法。在 jsp 页面可以有多个脚本片段,但是多个脚本片段之间要保证结构完整。

    jsp 声明:<%! %>

    1、<%! %> 用于声明全局变量、方法、属性、类,在其中定义的的变量为该页面级别的共享变量。
    2、其中写的内容将来会直接翻译在Servlet类中。
    例子:

    <%!--变量--%>
    <%! int sum = 1; %>
    
    <%!--方法--%>
    <%!
    String demo(String name){
    ...
    }
    %>
    
    <%!--类--%>
    <%!
    public class A(){
    ...
    }
    %>
    
    jsp 表达式:<%= %>

    1、用于将已经声明的变量或者表达式输出到网页上面。
    2、直接写在 jsp 页面<body></body>中的代码称作模板元素,将来会 Servlet 的 Service 方法中的out.write("___")中,作为输出内容。

    <body>
    	<%
        for (int i = 0; i < 3; i++) {
            out.println(i * 2);
        }
        %>
    </body>
    

    输出:0 2 4

    <body>
    	<%! int sum = 1; %>
        <% int sum = 8; %>
        <h3>----<% out.print(sum+1); %></h3>
        <h3>----<%= this.sum %></h3>
    </body>
    

    输出:9 1
    在这里插入图片描述

  • 相关阅读:
    计算机开机启动原理
    行业术语缩写参照表
    Ghost 克隆工具使用教程
    Windows 系统常用快捷键
    MindMaster使用技巧
    工作打印机型号驱动汇总
    Android手机免ROOT卸载系统内置应用
    RTX腾讯通聊天消息备份
    Work TEL
    成功实施ITSM SLA的5个步骤
  • 原文地址:https://www.cnblogs.com/yu011/p/14342717.html
Copyright © 2020-2023  润新知