⑥又是星期五,小試牛刀(編寫定制標簽)


前言

  今天有點迷茫。是身體累了,還是心累了。有種覺得想大哭而無力的感覺(可能心還沒成熟,或是昨天羽毛球打累了)。加油,Jeff Li. 活在當下,堅持打好基礎,堅持刷ACM,堅持coding。

  今天下午的小故事,其實我今天想回家。但不知道住哪里?買了動車票,等車的時候,我在候車室看着書。漸漸地,回去,家?爸媽在遠地工作。家,仿佛還是實驗室是我的家。漸漸地,收拾書本。我退了票,做上了回來的公交,返回終點站的學校。

  路途中,發現了一位老者,還是莫莫的掃着往前看沒有盡頭,往后看掃過的地也是沒有盡頭的馬路。抬了下頭,用自己暗色的工作服擦去額上的汗水。“他是用生命在work,用生命在路上。”想想自己,迷茫,何必迷茫?用生命看書,獲取知識,用生命去coding。我的理想[傳送門]會靠近。

                                                                                   “I can do it !”

言歸正傳

  定制標簽概述

    利用JSP標准動作指令訪問和操作JavaBeans,是首次嘗試將表現代碼(html)和業務邏輯(java 代碼)實現分離。JSP 2.0添加了兩項新特性,第一個特性是一個新的接口,稱作Simple Tag. 第二項特性是一種使編寫定制標簽一樣編寫標簽文件機制。[go]

 

  簡單工作原理和小范例

 

                  

                      A simple pic of its principle

 

  簡單的標簽處理器中的主體用一個JspFragment類實例表示其生命周期。

 

    1.JSP容器創建簡單標簽處理器實例

    2.JSP→setJspContext 傳遞一個JspContext對象,其對象返回一個JspWriter,用於響應到客戶端

            public void setJspContext(JspContext jspContext)

    3.JSP 調用setParent方法。將JspTag進來。

            public void setParent(JspTag parent)

    4.JSP為每個標簽定義的屬性設置方法(Setter)

    5.若標簽有主體內容,則JSP調用SimpleTag接口的setJspBody方法,將主體作為JspFragment傳遞。

    6.Jsp調用doTag方法(SimpleTag只有這個接口),所有變量該方法同步。

 

    mum said, “I learned a little . so i use my hand to earn money by the hard work.”

 

  SimpleTag 小例子

    結構

      

 

    MyFirstTag類

package sedion.jeffli.tag;

import java.io.IOException;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import javax.servlet.jsp.tagext.SimpleTag;

public class MyFirstTag implements SimpleTag{

    JspContext jspContext;    //傳遞的對象
    
    @Override
    public void doTag() throws JspException, IOException {
        System.out.println("doTag");
        jspContext.getOut().print("This is my first tag");
    }

    @Override
    public JspTag getParent() {
        System.out.println("getParent");
        return null;
    }

    @Override
    public void setJspBody(JspFragment arg0) {
        System.out.println("setJspBody");
    }

    @Override
    public void setJspContext(JspContext arg0) {
        System.out.println("setJspContext");
        this.jspContext = arg0;
    }

    @Override
    public void setParent(JspTag arg0) {
        System.out.println("setParent");
    }

}
View Code

   

   注冊標簽-mytags.tld

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2eeweb-jsptaglibraty_2_1.xsd"
    version="2.1">
    
    <tlib-version>1.0</tlib-version>
    <short-name>mt</short-name>
    <tag>
        <name>firstTag</name>
        <tag-class>sedion.jeffli.tag.MyFirstTag</tag-class>
        <body-content>empty</body-content>
    </tag>
    
</taglib>

  

  顯示的jsp-index.jsp

<%@taglib uri="/WEB-INF/classes/mytags.tld" prefix="easy"%>
<html>
    <head>
        <title>this is my first tag</title>
    </head>
    <body>
        hello! tags
        <br/>
        <easy:firstTag></easy:firstTag>
    </body>
</html>

 

   效果圖

    

    自然,控制台打印也是調用流程... 自己看吧,親們

  小結:

    

    JSP→setJspContext 傳遞一個JspContext對象,其對象返回一個JspWriter,用於響應到客戶端。

 

編寫EL函數

  EL(JSP Expression Language),忘了就[傳送門]

  編寫兩個步驟(這里我們還是用上面的項目add 進去):

    ①寫靜態public類

    ②將function元素注冊標簽庫

    

    在sedion.jeffli.tag包下 -- MyFunctions類

package sedion.jeffli.tag;

public class MyFunctions {
    public static String reverseString(String s){
        return new StringBuffer(s).reverse().toString();
    }
}

 

   mytags.tld 內<taglib></taglib>之間添加

  <function>
        <name>reverseString</name>
        <function-classe>sedion.jeffli.tag.MyFunctions</function-classe>
        <function-signature>
            java.lang.String reverseString(java.lang.String)
        </function-signature>
    </function>

  

   頁面添加

    ${easy:reverseString("hello EL functions")}

 

    此時,我在聽天籟。一個好的耳機,讓我很陶醉,不累. 想起阿公一句話:“書法,堅持練。肯定比我好了。有些字我還要向你學習呢。”

                  

                        小朽作品一張,做比說難。貴在堅持!

    

發布定制標簽(我很看好,以后這樣做)

  簡單來說,打個jar以便其他人使用。

  123,輕松搞定(上面function為例)

 

    ①結構

 

      

 

    ②在tld文件<taglib></taglib>之間添加uri

<uri>http://examp.com/taglib/function</uri>

    

    ③改。去頁面

<%@taglib uri="http://examp.com/taglib/function" prefix="easy"%>

 

    這,懵懵懂懂那些java.lang.String形成。我以后也要開源寫出來hlep others

 

去總結

   對於,分離表現邏輯和業務邏輯來說,用定制標簽必用javabean好很多。還有 打包 jar,我馬上要用起來。

 

   這里想對媽媽說,“sorry,有時候迷茫導致我有點不乖。我會堅持習慣,慢慢完成自己的目標。心慢慢練,不然炸了就不好了。哈哈,爸媽身體健康。工作辛苦了!”

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM