• JSP指示元素<%@ %> 与指示类型


    JSP提示元素

      <%@ 指示类型  [属性="值"]%>


    指示类型

      指示类型有三种,分别是taglib、include、page


    taglib指示类型

      用于引入标签库

      引入JSTL1.1核心标签库:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


    include指示类型

      用于将别的JSP页面包括进来进行,例如:

    includeDemo.jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%> 
    <%@include file="/WEB-INF/jspf/header.jspf"%>
        <h1>include 示範本體</h1>
    <%@include file="/WEB-INF/jspf/foot.jspf"%> 
    View Code

    header.jspf

    <%@page pageEncoding="UTF-8" %>
    <!DOCTYPE html> 
    <html> 
        <head> 
            <meta charset="UTF-8"> 
            <title>include 示範開頭</title> 
        </head> 
    <body> 
    View Code

    foot.jspf

        <%@page pageEncoding="UTF-8" %>
        </body> 
    </html> 
    View Code

      上面这个程序在第一次执行时,将会把header.jspf与foot.jspf的内容包括进来作转译。实际执行时,容器会组合includeDemo.jsp、header.jspf与foot.jspf的内容后,再转译为Servlet,也就是说,相当于转译这个JSP: 

    <%@page contentType="text/html" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>include 示範開頭</title>
        </head>
        <body>
            <h1>include 示範本體</h1>
        </body>
    </html>
    View Code

      所以最后会生成一个Servlet(而不是三个),这是一种静态的包括方式


    page指示类型

      page指示类型常用的属性有主要有:import、contentType、pageEncoding

      import属性:可以在同一个import属性中,使用逗号分隔数个import的内容。

      contentType属性:用来告知响应给浏览器的文件类型。

      pageEncoding属性:用来设置转译、编译时使用的字符编码。

      page指示类型其他属性

      info属性:用于设置目前JSP页面的基本信息,这个信息最后会转换为Servlet程序中使用getServletInfo()所取得的信息。

      autoFlush属性:用于设置输出串流是否要自动清除,默认是true。如果设置为false,而缓冲区满了却还没调用flush()将数据送出至客户端,则会产生异常。

      buffer属性:用于设置至客户端的输出串流缓冲区大小,设置时必须指定单位,例如buffer="16kb"。默认是8kb。

      errorPage属性:用于设置当JSP执行错误而产生异常时,该转发哪一个页面处理这个异常。

      isErrorPage属性:设置JSP页面是否为处理异常的页面,这个属性要与errorPage配合使用。  

      extends属性:用来指定JSP网页转译为Servlet程序之后,该继承哪一个类。以Tomcat为例,默认是继承自HttpJspBase(HttpJspBase又继承自HttpServlet)。基本上几乎不会使用到这个属性。

      language属性:指定容器使用哪种语言的语法来转译JSP网页,言下之意是JSP基本上可使用其他语言来转译,不过事实上目前只能使用Java的语法(默认使用java)。

      session属性:设置是否在转译后的Servlet源代码中具有创建HttpSession对象的语句。默认是true,若某些页面不需作进程跟踪,设成false可以增加一些效能。

      isELIgnored属性:设置JSP网页中是否忽略表达式语言(Expression Language),默认是false,如果设置为true,则不转译表达式语言。这个设置会覆盖web.xml中的<el-ignored>设置。

      isThreadSafe属性:告知容器编写JSP时是否注意到线程安全,默认值是true。如果设置为false,则转译之后的Servlet会实现SingleThreadModel接口,每次请求时将创建一个Servlet实例来服务请求。虽然可以避免线程安全问题,这会引起性能问题,极度不建议设置为false。


    web.xml配置JSP

      可以在web.xml中统一设置JSP的网页编码、内容类型、缓冲区大小等,例如:

    <?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>
                <page-encoding>UTF8</page-encoding>
                <default-content-type>text/html</default-content-type>
                <buffer>16kb</buffer>
            </jsp-property-group>
        </jsp-config>
    
    </web-app>
    View Code

      也可以在web.xml中指定JSP开头与结尾要包含的网页,例如:

    <?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>
                <include-prelude>/WEB-INF/jspf/header.jspf</include-prelude>
                <include-coda>/WEB-INF/jspf/foot.jspf</include-coda>
            </jsp-property-group>
        </jsp-config>
    
    </web-app>
    View Code

    注意

      指示元素如果如下编写:

    <%@page import="java.time.*" %>
    <%@page contentType="text/html" pageEncoding="UTF-8" %>
    Hello!
    View Code

      因为在编写JSP指示元素时,换行了两次,这两次换行的字符也会输出,所以最后产生的HTML会有两个换行字符,接着才是“Hello!”这个字符串输出。一般来说,这不会有什么问题,但如果想要忽略这样的换行,则可以在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>
                <trim-directive-whitespaces>true</trim-directive-whitespaces>
            </jsp-property-group>
        </jsp-config>
    
    </web-app>
    View Code
  • 相关阅读:
    使用nmon进行系统监控
    linux中内存使用原理
    测试网站访问速度的5个方法
    手机站点击商务通无轨迹解决方法
    PHP开启伪静态配置
    Phpcms V9当前栏目及所有二级栏目下内容调用标签
    手机访问网跳转到手机端
    移动端web开发技巧 -- 转载
    php错误:You don't have permission to access / on this server.
    Navicat for MySQL使用手记(上)--创建数据库和表
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/10079595.html
Copyright © 2020-2023  润新知