整合營銷服務商

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

          免費咨詢熱線:

          jsp頁面內嵌另一個jsp公共頁面

          jsp頁面內嵌另一個jsp公共頁面

          開發過程中,有些功能是一直可以重復使用的,這樣的頁面我們可以做成公共的,供每個頁面適用,那么就需要我們在使用的時候做一下嵌套。

          例如:這樣一個頁面中:

          上半部分是公共的:

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

          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

          <%@ taglib prefix="fund" uri="/WEB-INF/tag/fund.tld"%>

          <div class='box-content box-double-padding'>

          <form class='form form-horizontal' id="selectForm" action="${pageContext.request.contextPath}/admin/trade/payByCard" method="post" style='margin-bottom: 0;'>

          <input id="urlParam" name="urlParam" type='hidden' value="${param.pageTitle}" />

          <div class='row-fluid'>

          <div class="span6 box">

          <label class='control-label'>客戶類型</label>

          <div class='controls'>

          <span class="control-text">

          <select class='input-block-level' id='custType' name="custType" validate="required:true">

          <fund:dictOptions dictId="301001" value="${ map['custType'] }"/>

          </select>

          <i class="form-tips text-error">*</i>

          </span>

          </div>

          </div>

          <div class="span6 box">

          <label class='control-label'>資金卡號</label>

          <fund:appParam keyName="pay_mode" keyValue="2">

          <div class='controls'>

          <input class="form-control" id="accNo" name="accNo" autocomplete="off" value="${map['accNo']}" type='text' validate="required:true"/>

          <i class="form-tips text-error">*</i>

          </div>

          </fund:appParam>

          <div class='controls'>

          <button class='btn btn-default' id="selectBtn" mode='submit' type='submit'>刷卡</button>

          </div>

          </div>

          </div>

          <div class='row-fluid'>

          <div class="span6 box">

          <label class='control-label'>基金交易賬戶</label>

          <div class='controls'>

          <input class="form-control" id="financeAcc" name="financeAcc" autocomplete="off" value="${map['financeAcc']}" type='text' disabled/>

          </div>

          </div>

          <div class="span6 box">

          <label class='control-label'>風險等級</label>

          <div class='controls'>

          <%-- <select class='input-block-level' id='riskLevel' ajaxValue="${riskLevel}" name="riskLevel"> --%>

          <%-- <fund:dictOptions dictId="301005" value="${map['riskLevel']}"/> --%>

          <!-- </select> -->

          <input class="form-control" id="riskLevel" name="riskLevel" autocomplete="off" value="${map['riskLevel']}" type='text' disabled/>

          </div>

          </div>

          </div>

          </form>

          </div>

          <script type="text/javascript">

          </script>

          在另一個 頁面嵌套的時候只需要把頁面加進去就可以了:

          <jsp:include page="../../includes/tradeCommon.jsp" flush="true" ></jsp:include>

          這樣,就實現了一個jsp頁面嵌套公共的jsp頁面。

          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指令的使用及其本質。

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

          面幾個小節,已經把JSP程序的創建以及運行原理都介紹完了,這一小節開始介紹具體的JSP語法。JSP本質上是Servlet,Servlet是采用Java語言編寫的,所以JSP語法也是要滿足Java語法。

          JSP是經過JSP引擎渲染成Servlet程序,那么渲染過程中,就需要知道渲染的規則,這些規則也就是我們需要學習的JSP基礎語法,這一小節學習JSP表達式的語法。

          1.1、JSP表達式基礎語法

          JSP表達式,是指:在JSP文件中使用JSP的表達式語法,將對應的代碼輸出或者拼接到對應的位置。語法規則如下:

          <%=這里寫表達式內容,不能使用分號結尾 %>

          注意:<%=xxx%>表達式,最終會使用out.print()方法輸出表達式對應的內容。

          案例代碼如下所示:

          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
              <title>JSP基礎語法之JSP表達式</title>
          </head>
          <body>
              <h3>JSP基礎語法之JSP表達式</h3>
              <%!
                  public String getData() {
                      return "Hello World!";
                  }
              %>
              <p>
                  使用<%="JSP" %>表達式語法,輸出內容:<%=getData() %>
              </p>
          </body>
          </html>

          運行結果如下所示:

          注意:JSP表達式語法中,不能使用分號【;】結尾,因為分號在Java中表示語句結束符號。

          1.2、JSP表達式的本質

          JSP表達式的本質,就是將JSP文件中使用JSP表達式語法定義的代碼,使用out.print()方法,嵌入到_jspService()方法里面。查看上面JSP文件編譯之后的源代碼如下所示:

          /*
           * Generated by the Jasper component of Apache Tomcat
           * Version: Apache Tomcat/8.5.98
           * Generated at: 2024-02-24 11:57:45 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 org.apache.jsp;
          
          import javax.servlet.*;
          import javax.servlet.http.*;
          import javax.servlet.jsp.*;
          
          public final class demo_jsp extends org.apache.jasper.runtime.HttpJspBase
                  implements org.apache.jasper.runtime.JspSourceDependent,
                  org.apache.jasper.runtime.JspSourceImports {
          
          
            public String getData() {
              return "Hello World!";
            }
          
            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=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\n");
                out.write("<html>\r\n");
                out.write("<head>\r\n");
                out.write("    <title>JSP基礎語法之JSP表達式</title>\r\n");
                out.write("</head>\r\n");
                out.write("<body>\r\n");
                out.write("    <h3>JSP基礎語法之JSP表達式</h3>\r\n");
                out.write("    ");
                out.write("\r\n");
                out.write("    <p>\r\n");
                out.write("        使用");
                out.print( "JSP" );
                out.write("表達式語法,輸出當前時間:");
                out.print( getData() );
                out.write("\r\n");
                out.write("    </p>\r\n");
                out.write("</body>\r\n");
                out.write("</html>\r\n");
              } 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);
              }
            }
          }

          通過上面源代碼可以看出,我們使用<%=xxx%>語法定義的代碼,最終會被編譯成使用out.print()方法輸出的Java代碼,如下圖所示:

          到此,JSP表達式語法就就介紹完啦。

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


          主站蜘蛛池模板: 亚洲熟女一区二区三区| 精品国产一区二区三区www| 一区二区三区视频在线观看| 极品少妇伦理一区二区| 无码人妻精品一区二区三区久久久| 精品无码国产一区二区三区AV| 熟女精品视频一区二区三区| 国产在线aaa片一区二区99| 国产亚洲一区二区三区在线不卡 | 日本一区二区三区精品国产 | 国产一区二区在线视频播放| 夜夜精品视频一区二区| 日韩高清一区二区| 乱色熟女综合一区二区三区| 精品国产区一区二区三区在线观看| 国模大胆一区二区三区| 精品在线一区二区三区| 一区二区三区91| 国产婷婷色一区二区三区| 无码人妻AⅤ一区二区三区| 人妻AV一区二区三区精品| 在线观看日本亚洲一区| 好吊妞视频一区二区| 无码人妻久久一区二区三区蜜桃 | 精品福利一区二区三区| 国产色综合一区二区三区| 日韩精品无码免费一区二区三区| 亚洲福利一区二区| 夜夜精品视频一区二区| 中文字幕一区二区三区有限公司| 日本不卡在线一区二区三区视频| 日本免费一区二区三区四区五六区| 国产福利一区二区三区在线视频| 在线电影一区二区| 国产一区二区三区免费观在线 | 免费人人潮人人爽一区二区| 中文字幕在线视频一区| 2022年亚洲午夜一区二区福利| 人妻视频一区二区三区免费| 国产成人一区在线不卡| 深夜福利一区二区|