<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > 第一部分簡單講解:jsp語法的規范,以及三大編譯指令,七個動作指令和九大內置對象,生命周期講解等。這章主要講解el表達式,核心標簽庫。 全部代碼下載:[鏈接](http://download.csdn.net/detail/peace1213/9303561) ### 1.核心標簽庫(JSTL:c)講解: ### 1.1簡要介紹: JSTL全名JspServer Pages Standdard Tag Library(Jsp標準標簽庫),它是sun公司發布的一個針對JSP開發的新組件,它允許使用標簽開發Jsp頁面.JSTL支持通用的、結構化的任務,比如迭代,條件判斷,XML文檔操作,國際化標簽,SQL標簽。 除了這些,它還提供了一個框架來使用集成JSTL的自定義標簽。 JSTL所提供的標簽庫主要分為五大類: ![09](https://box.kancloud.cn/2016-04-13_570e00131bec0.png "") ### 1.2JSTL庫安裝: 1. 從Apache的標準標簽庫中下載的二進包(jakarta-taglibs-standard-current.zip)。下載地址:[http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/](http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/) 1. 將下載的壓縮包解壓,將lib下的兩個jar文件:standard.jar和jstl.jar文件拷貝到Tomcat下lib/目錄下。 1. 現在就可以通過在頭部包含標簽使用JSTL了 ### 1.3核心標簽庫的使用: 核心標簽是最常用的JSTL標簽。現在基本上我們也之使用功能核心標簽庫,此去只介紹核心標簽,對于其他的標簽用法類似。 1. 引用核心標簽庫的語法如下: ~~~ <%--導入核心標簽庫 --%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" ~~~ 1. 核心標簽庫的介紹: ![10](https://box.kancloud.cn/2016-04-13_570e001333b69.png "") 1. 演示如下:詳細見注釋 ~~~ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*,com.rlovep.entity.Student" %> <%--導入核心標簽庫 --%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>核心標簽jiangjie</title> </head> <body> <%--使用標簽庫 --%> <%--set標簽:保存數據到域中,默認保存到pag域中 var:屬性名 value:屬性價值,可以是對象 scope:范圍 --%> <c:set var="name" value="rose" scope="page"></c:set> <%--out標簽: 類似輸出表達式:<%= %> value:顯示的內容; default:value為空時顯示的內容 escapexml:是否對<等實體符號轉義; --%> <%--el表達式輸出,調用屬性 --%> <c:out value="${name }" default="<h3>標題3</h3>" escapeXml="true"></c:out> <%--默認值測試,以及輸出特殊字符 --%> <c:out value="${peace }" default="<h3>標題</h3>" escapeXml="true"></c:out> <hr/> <%--remove標簽:刪除數據,默認刪除到pag域中 var:屬性名 scope:范圍 --%> <c:remove var="name" scope="page"/> <c:out value="${name }" default="刪除name之后" escapeXml="true"></c:out> <hr/> <%--catch標簽:可以用來取得發生錯誤時的信息,同時可以進行適當處理.相當于try catch var:保存錯誤信息的exception --%> <c:catch var="e"> <% int a=0,b=10; b=b/a; %> </c:catch> <%--輸出錯誤信息 --%> <c:out value="${e }"/> <%-- <% int a=0,b=10; b=b/a; %> --%> <hr/> <%-- <c:url>標簽將URL格式化為一個字符串,然后存儲在一個變量中 var:變量名。 value:url context:本地的另一個工程庫 --%> <%--c:param 在重定向時當參數用 --%> <c:url var="url" value="el.jsp"> <c:param name="pass" value="peace"/> </c:url> <a href="${url }">url重定向</a> <c:url var="baidu" value="http://wwww.baidu.com"/> <a href="${baidu }">百度</a> <hr/> <%--<c:import>標簽:功能類似于<jsp:import>,但是功能更加強大。可以導入外部jsp文件,和保存到輸入流中 var:輸出保存到string varReader:輸出保存到輸入字符流 url:包含的頁面 --%> <c:import url="/common/header1.jsp" > <c:param name="name" value="sisi"/> </c:import> <hr/> <%--c:redirect 標簽 可以是絕對地址 url:地址 context:另外一個jsp容器 --%> <%-- <c:redirect url="el.jsp"> <c:param name="pass" value="wang"></c:param> </c:redirect> --%> <% Integer score=new Integer(60); pageContext.setAttribute("score", score); %> <%--if標簽 :單條件判斷 test:判斷是否為true執行 --%> <c:if test="${!empty score}"> 條件成立 </c:if> <hr/> <%--choose標簽+when標簽+otherwirse標簽: 多條件判斷 --%> <c:set var="score" value="56"></c:set> <c:choose> <c:when test="${score>=90 && score<=100}"> 優秀 </c:when> <c:when test="${score>=80 && score<90}"> 良好 </c:when> <c:when test="${score>=70 && score<80}"> 一般 </c:when> <c:when test="${score>=60 && score<70}"> 及格 </c:when> <c:otherwise> 不及格 </c:otherwise> </c:choose> <%-- forEach標簽:循環 --%> <% //List List<Student> list = new ArrayList<Student>(); list.add(new Student("rose",18)); list.add(new Student("jack",28)); list.add(new Student("lucy",38)); //放入域中 pageContext.setAttribute("list",list); //Map Map<String,Student> map = new HashMap<String,Student>(); map.put("100",new Student("mark",20)); map.put("101",new Student("maxwell",30)); map.put("102",new Student("narci",40)); //放入域中 pageContext.setAttribute("map",map); %> <hr/> <%-- begin="" : 從哪個元素開始遍歷,從0開始.默認從0開始 end="": 到哪個元素結束。默認到最后一個元素 step="" : 步長 (每次加幾) ,默認1 items="": 需要遍歷的數據(集合) var="": 每個元素的名稱 varStatus="": 當前正在遍歷元素的狀態對象。(count屬性:當前位置,從1開始,last屬性:最后一個) --%> <c:forEach items="${list}" var="student" varStatus="varSta"> 序號: {student.name } - 年齡:${student.age}<br/> </c:forEach> <hr/> <c:forEach items="${map}" var="entry"> {entry.value.name } - 年齡:${entry.value.age }<br/> </c:forEach> <hr/> <%-- forToken標簽: 循環特殊字符串 --%> <% String str = "java-php-net-平面"; pageContext.setAttribute("str",str); %> <c:forTokens items="${str}" delims="-" var="s" varStatus="status"> ${s }<br/> <c:if test="${status.last }"> <c:out value="輸出:${status.count}"/>個元素 </c:if> </c:forTokens> </body> </html> ~~~ ### 2.EL表達式語言: E L(Expression Language) 目的:為了使JSP寫起來更加簡單。 EL 提供了在 JSP 腳本編制元素范圍外使用運行時表達式的功能。 EL既可以用來創建算術表達式也可以用來創建邏輯表達式。在JSP EL表達式內可以使用整型數,浮點數,字符串,常量true、false,還有null。 EL使得訪問存儲在JavaBean中的數據變得非常簡單,EL可以訪問內置對象,以及放置在對象中的屬性; EL表達式作用: 向瀏覽器輸出域對象中的變量值或表達式計算的結果!!! ### 2.1EL語法:${exper} 1. 輸出基本數據類型變量: 不注明域的范圍時,從四個域中獲取:順序為pageScoep / requestScope / sessionScope / applicationScope name<指定域獲取:{pageScope.name} <%–等價于getAttribute()方法;–%> 1. 輸出對象的屬性值 ${student.name} 等價于 (點相對于調用getXX()方法) 1. 使用EL獲取集合對象 {list[0].age } <%– list[0]等價于 (中括號相對于調用get(參數)方法) ((List)pageContext.findAttribute(“list”)).get(0)–%> 1. el還可以執行算法表達式 EL表達式支持大部分Java所提供的算術和邏輯操作符: ![11](https://box.kancloud.cn/2016-04-13_570e0013512bc.png "") 演示如下: ~~~ 比較運算 ${10>5 }<br/> ${10<5 }<br/> ${10!=10 } <hr/> 邏輯運算 ${true && false }<br/> ${true || false }<br/> ${!false }<br/> 判空 null 或 空字符串: empty <% //String name = "eric"; //String name = null; String name = ""; pageContext.setAttribute("name",name); %> 判斷null: ${name==null }<br/> 判斷空字符: ${name=="" }<br/> 判空: ${name==null || name=="" } 另一種判空寫法: ${empty name } ~~~ ### 2.2EL高級用法自定義函數: el表達語言的自定義函數 本質是為了調用提供一種方法允許el中調用某類的靜態方法: 1. 自定義函數使用語法: ${rlovep:reverse(student.name)}<%–調用reverse方法使傳入的student.name反轉–%> 2. 開發步驟: 1.在src建立開發處理類,這個類包含若干個靜態方法。當然這個步驟可以省掉使用jdk庫的類也是可以的 2.使用標簽庫定義函數:定義函數的方式與定義標簽的方式相似。增加function標簽就行; 3.使用:增加taglib指令 3. 演示如下 建立開發處理類: MyFuns.java ~~~ public static String reverse(String str) { return new StringBuffer(str).reverse().toString(); } public static int count(String str) { return str.length(); } ~~~ 在webcontent目錄下建立:mytaglib.tld標簽庫文件,增加function標簽 ~~~ <?xml version="1.0" encoding="UTF-8" ?> <taglib 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-jsptaglibrary_2_1.xsd" version="2.1"> <description>A tag library exercising SimpleTag handlers.</description> <!-- 標簽庫的版本 --> <tlib-version>1.0</tlib-version> <!-- 標簽庫前綴 --> <short-name>rlovep</short-name> <!-- tld文件的唯一標記 --> <uri>http://rlovep.com</uri> <!-- 定義第一個方法 --> <function> <!-- 定義方法名 --> <name>reverse</name> <!-- 定義方法的處理類 --> <function-class>com.rlovep.elmethod.MyFuns</function-class> <!-- 定義函數的實現方法:包括返回值和函數名以及參數 --> <function-signature>java.lang.String reverse(java.lang.String)</function-signature> </function> <!-- 定義第二個方法 --> <function> <!-- 定義方法名 --> <name>count</name> <!-- 定義方法的處理類 --> <function-class>com.rlovep.elmethod.MyFuns</function-class> <!-- 定義函數的實現方法:包括返回值和函數名以及參數 --> <function-signature>int count(java.lang.String)</function-signature> </function> </taglib> ~~~ 增加taglib指令 <%@taglib prefix=”rlovep” uri=”http://rlovep.com” %> ### 2.3整體演示如下: ~~~ <%@page import="java.util.HashMap,java.util.Map"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.rlovep.entity.Student"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 定義標簽 --> <%@taglib prefix="rlovep" uri="http://rlovep.com" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>el表達式學習:</title> </head> <body> <%--el的內置對象 --%> <% pageContext.setAttribute("name", "peace"); pageContext.setAttribute("age", "22", pageContext.APPLICATION_SCOPE); %> <%--直接從域中搜索獲得屬性 --%> El表達式:${name } <hr/> <%--等價于 --%> 表達式:<%=pageContext.findAttribute("name") %> <hr/> <%--從指定域中獲取屬性 --%> EL表達式:${applicationScope.age} <hr/> <%--等價于 --%> <%=pageContext.getAttribute("age", pageContext.APPLICATION_SCOPE) %> <hr/> <%--獲取請求參數 --%> 請求參數${param.pass} <hr/> <%--請求頭獲取 --%> 請求頭${header.Host} <%--還可以獲得初始參數:initparam 以及cookie --%> <hr/> <%--el輸出對象的屬性 ,必須將對象放入域中--%> <% Student student=new Student("peace",22); String a="123"; //放入域中 pageContext.setAttribute("student", student); //放入list中 List<Student> list=new ArrayList<Student>(); list.add(new Student("sisi",22)); list.add(new Student("nick",20)); list.add(new Student("lucy",38)); pageContext.setAttribute("list", list); //放入map中 Map<String,Student> map=new HashMap<String,Student>(); map.put("100",new Student("mark",20)); map.put("101",new Student("maxwell",30)); map.put("102",new Student("narci",40)); //放入域中 pageContext.setAttribute("map",map); %> <%--使用el獲取對象值 --%> {student.age } <%-- ${student.name} 等價于 (點相對于調用getXX()方法) <%=((Student)pageContext.findAttribute("student")).getName()%> --%> <hr/> <%--使用EL獲取List對象 --%> {list[0].age }<br/> {list[1].age }<br/> {list[2].age } <%-- list[0]等價于 (中括號相對于調用get(參數)方法) ((List)pageContext.findAttribute("list")).get(0) --%> <hr/> <%--使用EL獲取Map對象 --%> {map['100'].age }<br/> {map['101'].age }<br/> {map['102'].age }<br/> <%--el還可以執行算法表達式 --%> <%--el表達語言的自定義函數 本質是為了調用提供一種方法允許el中調用某類的靜態方法: 1.在src建立開發處理類,這個類包含若干個靜態方法。當然這個步驟可以省掉使用jdk庫的類也是可以的 2.使用標簽庫定義函數:定義函數的方式與定義標簽的方式相似。增加function標簽就行; 3.增加taglib指令 --%> 此去表達式調用函數:<br/> peace倒轉:${rlovep:reverse(student.name)}<%--調用reverse方法使傳入的student.name反轉--%> <br/> peace字符個數:${rlovep:count(student.name)} </body> </html> ~~~ 來自一條小鯊魚wpeace(rlovep.com)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看