整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          《JSP》第09節:JSP三大指令之include指令

          SP指令是指:用于設置JSP頁面相關屬性的一個語法命令,例如:設置頁面編碼字符集、導入其他包等等。JSP中提供了三個指令,分別是:page指令、include指令、taglib指令。其中page指令用于設置JSP頁面屬性,include指令用于引入其他的JSP文件,taglib指令用于引入標簽庫。這一小節內容介紹include指令的使用。

          1.1、include指令作用

          include指令作用:將指定的文件引入到當前JSP頁面里面。include指令會將引入的文件內容嵌入到當前JSP頁面中的對應位置。

          <%@ include file="文件的相對路徑" %>

          案例代碼:

          • 創建一個header.jsp文件。
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
              <title>這是HTML頭部</title>
          </head>
          • 創建一個include.jsp文件。
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <%-- 引入頭部文件 --%>
          <%@ include file="header.jsp" %>
          <body>
          
          <div style="background-color: cadetblue">
              這是正文內容區域
          </div>
          
          <%-- 引入底部文件 --%>
          <%@ include file="footer.html" %>
          </body>
          </html>
          • 創建一個footer.jsp文件。
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <div style="background-color: antiquewhite;">
            這是footer底部內容區域
          </div>

          啟動Tomcat容器,瀏覽器訪問http://localhost:8080/servlet/include.jsp,結果如下:

          1.2、include指令的本質

          include指令的本質是什么呢???我們來查看下編譯之后的Java源代碼,找到上面include.jsp文件編譯之后的源文件,如下所示:

          /*
           * Generated by the Jasper component of Apache Tomcat
           * Version: Apache Tomcat/8.5.98
           * Generated at: 2024-02-25 05:06:41 UTC
           * Note: The last modified time of this file was set to
           *       the last modified time of the source file after
           *       generation to assist with modification tracking.
           */
          package com.gitcode.servlet;
          
          import javax.servlet.*;
          import javax.servlet.http.*;
          import javax.servlet.jsp.*;
          
          public final class include_jsp extends org.apache.jasper.runtime.HttpJspBase
              implements org.apache.jasper.runtime.JspSourceDependent,
                           org.apache.jasper.runtime.JspSourceImports {
          
            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;
          
            static {
              _jspx_dependants = new java.util.HashMap<java.lang.String,java.lang.Long>(2);
              _jspx_dependants.put("/footer.jsp", Long.valueOf(1708837593266L));
              _jspx_dependants.put("/header.jsp", Long.valueOf(1708837593271L));
            }
          
            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 = null;
            }
          
            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;
            }
          
            public java.util.Set<java.lang.String> getPackageImports() {
              return _jspx_imports_packages;
            }
          
            public java.util.Set<java.lang.String> getClassImports() {
              return _jspx_imports_classes;
            }
          
            public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
              if (_el_expressionfactory == null) {
                synchronized (this) {
                  if (_el_expressionfactory == null) {
                    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
                  }
                }
              }
              return _el_expressionfactory;
            }
          
            public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
              if (_jsp_instancemanager == null) {
                synchronized (this) {
                  if (_jsp_instancemanager == null) {
                    _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
                  }
                }
              }
              return _jsp_instancemanager;
            }
          
            public void _jspInit() {
            }
          
            public void _jspDestroy() {
            }
          
            public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
                throws java.io.IOException, javax.servlet.ServletException {
          
              final java.lang.String _jspx_method = request.getMethod();
              if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
                response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允許 GET、POST 或 HEAD。Jasper 還允許 OPTIONS");
                return;
              }
          
              final javax.servlet.jsp.PageContext pageContext;
              javax.servlet.http.HttpSession session = null;
              final javax.servlet.ServletContext application;
              final javax.servlet.ServletConfig config;
              javax.servlet.jsp.JspWriter out = null;
              final java.lang.Object page = this;
              javax.servlet.jsp.JspWriter _jspx_out = null;
              javax.servlet.jsp.PageContext _jspx_page_context = null;
          
          
              try {
                response.setContentType("text/html;charset=UTF-8");
                pageContext = _jspxFactory.getPageContext(this, request, response,
                			null, true, 8192, true);
                _jspx_page_context = pageContext;
                application = pageContext.getServletContext();
                config = pageContext.getServletConfig();
                session = pageContext.getSession();
                out = pageContext.getOut();
                _jspx_out = out;
          
                out.write('\r');
                out.write('\n');
                out.write('\r');
                out.write('\n');
                out.write("\r\n");
                out.write("<html>\r\n");
                out.write("<head>\r\n");
                out.write("    <title>這是HTML頭部</title>\r\n");
                out.write("</head>");
                out.write("\r\n");
                out.write("<body>\r\n");
                out.write("\r\n");
                out.write("<div style=\"background-color: cadetblue\">\r\n");
                out.write("    這是正文內容區域\r\n");
                out.write("</div>\r\n");
                out.write("\r\n");
                out.write('\r');
                out.write('\n');
                out.write("\r\n");
                out.write("<div style=\"background-color: antiquewhite;\">\r\n");
                out.write("  這是footer底部內容區域\r\n");
                out.write("</div>");
                out.write("\r\n");
                out.write("</body>\r\n");
                out.write("</html>");
              } catch (java.lang.Throwable t) {
                if (!(t instanceof javax.servlet.jsp.SkipPageException)){
                  out = _jspx_out;
                  if (out != null && out.getBufferSize() != 0)
                    try {
                      if (response.isCommitted()) {
                        out.flush();
                      } else {
                        out.clearBuffer();
                      }
                    } catch (java.io.IOException e) {}
                  if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
                  else throw new ServletException(t);
                }
              } finally {
                _jspxFactory.releasePageContext(_jspx_page_context);
              }
            }
          }

          通過上面源代碼,可以看到,使用include指令引入的兩個文件,最終都會將兩個文件中的內容直接嵌入到當前include.jsp文件里面,如下所示:

          所以include指令的本質就是將引入文件中的內容,直接拼接到當前JSP頁面的對應位置。這里也就會存在一個問題,引入的JSP文件中,不能存在和當前JSP頁面相同的變量名稱,因為變量名稱相同會導致編譯失敗。另外,使用include指令引入其他的JSP文件時候,只會生成訪問的那個JSP文件的源代碼,被引入的JSP文件不會生成對應的源代碼。

          以上,就是include指令的使用及其本質。

          今天就到這里,未完待續~~

          天上班前二十分鐘都是學習的時間,雖然這些內容都學習了好多次,但是溫故而知新,html/htm/shtml它們仨的區別你知道嗎?雖然網絡推廣、網絡營銷不是開發網站的,但是基本的代碼標簽還是需要知道的,有利于我們做網站的SEO優化,所以是必不可少的。

          html 和htm的區別


          百度百科解釋:

          htm與.html并沒有本質上的區別,表示的是同一種文件,不同的命名只是因為于不同的環境。 在Unix、Windows NT和Windows 95操作系統中,由于都支持長文件名格式,超文本文件文件名和擴展名長度可以不受限制,但擴展名必須是.HTML或 是.HTM。Unix系統的擴展名必須為.HTML,如果使用了三個字符的擴展名.HTM,那么當網上的Unix系統用戶瀏覽你的超文本文件時,只能在屏幕上看到超文本的源文件,而不是展示的結果;若訪問你的用戶系統是Windows 3.X、Windows NT 或Windows 95,那么文件擴展名是HTML和HTM是一樣的。所以Unix系統用戶建立超文本時,文件擴展名一定要采用.HTML。

          簡單可以理解如下:

          1、.htm與.html沒有本質上的區別,表示的是同一種文件,只是適用于不同的環境之下。

          2、DOS僅能識別8+3的文件名,所以*.htm的命名方法可以被DOS識別,而*.html的文件命名方式不能被之識別。

          3、在UNIX系統中,網頁必須使用.html擴展名,如果是htm,在瀏覽器中打開時則出現源代碼;Windows中支持兩種擴

          展名。也可以說,htm和html是Windows和UNIX對抗的產物。

          4、如果在網頁中同時存在index.html與index.htm,這是瀏覽器將先解釋index.html。

          其它理解:

          就是說實際上一樣的,比方有個html的文件,你重命名為htm也沒關系,IE還是能識別他并且打開。 但是我們在瀏覽器地址欄打開某個網址的時候,htm和html是完全不同的兩個文件了,指向了不同的服務器地址,其實說白了就是后綴名不同而已, 比如在電腦上搜索*.htm與*.html搜索出來不同。

          SHTML和HTML的區別



          百度百科解釋:

          如果用一句話來解釋就是:SHTML 不是HTML而是一種服務器API,shtml可通過服務器動態產成html.

          雖然兩者都是超文本格式,但shtml是一種用于SSI技術的文件。也就是Server Side Include--SSI服務器端包含指令。

          如果Web Server有SSI功能的話(大多數(尤其是基于Unix平臺)的WEB服務器如Netscape Enterprise Server等均支持SSI命令)。

          會對shtml文件特殊招待。先掃一次shtml文件看有沒有特殊的SSI指令存在。有就按Web Server設定規則解釋SSI指令。解釋完后跟一般html一起調去客戶端。

          html或htm與shtml或shtm的關系是什么?

          html或者htm是一種靜態的頁面格式,也就是說不需要服務器解析其中的腳本,或者說里面沒有服務器端執行的腳本,而shtml或者shtm由于它基于SSI技術,當有服務器端可執行腳本時被當作一種動態編程語言來看待,就如asp、jsp或者php一樣。

          當shtml或者shtm中不包含服務器端可執行腳本時其作用和html或者htm是一樣的。

          時刻鐘


          以上分享文字是個人原創觀點,如有問題可評論討論學習,如涉及到商業等法律問題與本人無關。

          nclude指令用于在JSP頁面引入其它內容,可以是JSP文件、html文件和文本文件等,相當于把文件的內容復制到JSP頁面。引入的文件和JSP頁面同時編譯運行。

          使用include指令有以下優點:

          增加代碼的可重用性

          使JSP頁面的代碼結構清晰易懂

          維護簡單

          include的語法如下:

          <%@ include file="URL" %>  1復制代碼類型:[java]

          其中,file指定需要引入文件的相對路徑。

          可以在頁面的任何位置編寫include指令。

          「鏈接」


          上一篇:HTML5-拖放
          下一篇:html大文件傳輸源碼
          主站蜘蛛池模板: 国产在线精品一区二区三区直播 | 久久无码人妻精品一区二区三区 | 精品乱人伦一区二区三区| 国产精久久一区二区三区| 久久精品国产一区二区三区肥胖| 91在线看片一区国产| 麻豆精品人妻一区二区三区蜜桃| 杨幂AV污网站在线一区二区| 久久精品视频一区二区三区| 男人的天堂亚洲一区二区三区| 亚洲高清日韩精品第一区| 国产一区二区精品久久岳√| 国产另类TS人妖一区二区 | 一区二区免费电影| 亚洲视频在线一区| 国产美女露脸口爆吞精一区二区| 日本精品3d动漫一区二区| 色狠狠AV一区二区三区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产一区二区好的精华液| 国产在线一区二区三区| 精品一区二区三区在线观看l| 精品一区二区三区在线播放视频| 国产伦理一区二区| 亚洲A∨精品一区二区三区| 99久久无码一区人妻a黑| 国产成人无码精品一区二区三区| 亚洲AV无码一区二区二三区软件| 国产在线一区二区在线视频| 波多野结衣中文一区| 日韩一区二区a片免费观看| 国产精品免费一区二区三区四区| 色老板在线视频一区二区 | 冲田杏梨高清无一区二区| 日本在线视频一区二区| 亚洲一区二区三区不卡在线播放| 亚洲一区二区三区高清在线观看 | 一区二区不卡视频在线观看| 少妇人妻精品一区二区| 久久精品日韩一区国产二区| 国产一区二区成人|