• 【JSP】JSP指令


    JSP指令

    说明:
    1、JSP指令用于告知JSP 引擎转译JSP时的转化参数,他们不产生输出信息,只是在JSP的转译和编译期间起作用。 
    2、JSP指令必须写在规定的格式中:  <%@  [goes here]  %>
    3、除了include指令外,page 和 taglib指令都必须写在JSP文件的开始处。
    JSP指令主要有3个    page , include , taglib ,下面一 一介绍
     
     

    page 指令

    page指令由很多k-v形式的属性构成,除了import属性外,其它的属性都只能出现一次。
     
     
    language ="java" 目前只能使用java,默认就好。
    extends  = "className" 指定转译后的Servlet的父类,通常是JSP引擎指定的,因此不要使用这个属性,默认就好。
    isThreadSafe="true"
    默认是true ,不要修改这个属性,默认就好。官方已经强烈不推荐将其设置为false。
    如果是false,那么多个请求串行执行service方法。
    autoFlush = "true|false"
    如果为true,则当out对象的输出流缓存满时,自动刷新流,将缓冲数据写入到响应正文中。
    如果为false,则当out对象的输出流缓存满时将抛出异常。
    默认是true,默认就好。
    isELIgnored = "false | true"
    此JSP页面的EL表达式是否启用。如果为true,则此JSP页面的EL不会生效。
    如果为false,则可以在此JSP页面使用EL。
    默认是false,默认就好。
    info="" JSP页面的描述信息,可以通过getServletInfo获得。可有可无。默认就好。
       
    buffer  = "none | 8kb| 16kb|等等" JspWriter对象 out 的输出缓冲的大小。默认是8kb
    isErrorPage= "true | false"

    指示当前JSP是否是用于处理错误的页面,如果是true,则这个JSP可以设置为其它JSP 的 errorPage 的值。

    且在这个JSP中可以使用隐式对象exception。

    errorPage = "error_page_url"
    指定当出现异常,错误时,转发的到的错误处理页面。error_page_url是相对地址。
    例如异常处理页面写在WEB/ErrorHandleJSPs下的500.jsp。
      errorPage= "WEB-INF/ErrorHandleJSPs/500.jsp"
       
    import   = "java.util.*,java.io.*"
    也就是导入包。import属性在JSP页面中可以出现多次(其它的只能出现一次)。例如
    <%@ page import="java.io.*"   % >
     <%@ page import="java.util.*" % >
    session = "true | false"
    指示这个JSP页面是否需要使用session。如果为true,则隐式对象session就是引用当前会话对象。
    并且,如果会话对象在这个JSP页面使用session之前没创建,则会自动创建且让隐式对象session引用这会话对象。
    如果为false,则此页面不能使用session,(session为null),也不会主动生成session对象。
    默认是true
    contentType="text/html;charset=utf-8" 响应文档的MIME类型。将成为转移后的Servlet中的service方法中的response.setContentType("xxxxxxxx")
    pageEncoding="utf-8" 定义此JSP页面保存时的字符编码。默认是 ISO-8859-1
    trimDirectiveWhitespaces="true|false"

    默认是false,设置为true后,会去除输出的HTML文档的前面的空白行。

     
     
    下面是一个JSP转译为Servlet的源代码,可以看出page指令影响JSP转译为Servlet。
    public void _jspService()
    {
            //.....
    
        try {
          response.setContentType("text/html; charset=UTF-8");   /*page指令的contentType属性产生的语句*/
          pageContext = _jspxFactory.getPageContext(
                this, 
                request, 
                response,
                null,       /*page指令配置的error page 的URL*/
                true,      /*page质量配置的是否使用session*/
                8192,      /*page指令配置的out对象的缓存大小(kb)*/ 
                true);     /*page指令配置的out对象是否autoFlush*/
         
         //.....
    }
     
     

    include指令

     
    静态包含,被包含的文件的内容将会在转译期间,合并到JSP文件中去(合并的插入位置就是incude指令所在的位置),其结果就好像被包含的文件的内容原本就写在JSP中一样。
     
     <%@include file="被包含文件的相对路径url"%>
    如果url是以 /开头的,则路径是相对于web根目录的路径
    如果不以 / 开头,则是相对于当前包含JSP的路径。
     
    被包含的页面可以是HTML,XML,JSP等。按照规范:被包含的如果是jsp文件,则这个文件的扩展名应该是jspf。
     
    用处:
    1、我们可以将网页底部的版权信息 写在一个单独的jsp文件中,然后其它页面如果需要在页面底部显示版权信息,则可以通过include指令包含过去。
     
    2、include指令可以在JSP页面中出现任意次和任意位置。因此他常常用于构建view层的视图模板骨架,例如head ,foot  navi 都可以分离开来,并使用include包含。
     
    当网页的内容板式是固定的模式,只有一部分会变动时,include就很有用。
     
    例子
     
    文件:index.jsp
    <%@ page contentType= "text/html; charset=UTF-8"   pageEncoding ="UTF-8" trimDirectiveWhitespaces= "true"
             session ="true"
    %>
    
    <! DOCTYPE html>
    <html>
    <head>
    <meta http-equiv = "Content-Type" content ="text/html; charset=UTF-8">
    <title> 标题</title>
    </head>
    <body>
    <h1> 欢迎</h1>
    
    <p> 啦啦啦啦啦啦 </p>
    
    <%@ include file= "/WEB-INF/jspf/copyright.jsp" %>
    </body>
    </html>
    文件:copyright.jsp

    位置:/WEB-INF/jspf/copyright.jsp

    <%@ page pageEncoding="UTF-8"%>
    <div style="1000px;height:100px;background:#F0F0F0">
    <p style =" text-align: center ;"> 我是版权信息 </p>
    </div>

    taglib指令

     
    taglib顾名思义是一些标签形成的库。这些tag每个都有自己的执行逻辑,是对复杂的Java代码的封装。使用这些tag时,是用XML语法来写,因此对于前端人员是友好的。
    使用tablig指令用于在JSP页面中导入 标签库 ,然后才可以使用。
     
    <%@taglib uri="TagLibraryURL"  prefix="tagPrefix" %>
    uri:  标签库的路径。如果标签库是以jar包形式给出的,则这里填的是一个网址。
    prefix:标签库的前缀。每个标签库都有(首选的)建议的一个值,一般都会使用这个建议的值,以方便和其它的程序员达成一致。
     
     
    例如:标签库以jar包形式给出
    <%@ taglib  prefix ="c" uri= "http://java.sun.com/jsp/jstl/core" %>
     
    例如:标签库没有打包,而是存在工程中。uri指定是tld文件的在web根目录下的路径
    <%@ taglib uri="/WEB-INF/tlds/myTaglib.tld" prefix="myPrefix" %>
     使用JSTL的 <c:if> 标签的例子
    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"
        trimDirectiveWhitespaces="true" session="true"%>
    
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        <!--如果用户存在,则显示购物车和个人中心-->            
        <c:if test="${sessionScope.user!=null}">
            <li>购物车</li>
            <li><a href="userCenter.jsp">个人中心 </a></li>
        </c:if>
    </body>
    </html>
     
  • 相关阅读:
    CefSharp High DPI问题的解决
    Navicat连接Oracle数据库报错ORA-28547解决方法
    postman模拟HttpPost请求的方法
    百度地图、高德地图、Google地图等坐标提取与转换
    ArcGIS API for JavaScript开发环境搭建与发布以及基本功能实现
    简单实现ASP.Net MVC网页播放音乐
    百度地图api 区级以下行政区划
    解决asp.net MVC中 当前上下文中不存在名称“model” 的问题
    【转】如何解决plsql查询oracle数据库语句where条件带有中文无法匹配结果
    Oracle的order by的中文排序问题
  • 原文地址:https://www.cnblogs.com/lulipro/p/7468570.html
Copyright © 2020-2023  润新知