1.JSP可以使用标签 自定义函数
    1.自己描述一个类
    2.类中描述自己的方法
    方法必须是静态的
    方法通常有返回值
    3.配置一个”说明书”——->xxx.tld
    当前工程下web文件夹中的WEB-INF文件夹下创建一个新的xx.tld文件
    1.先描述两个重要的东西 uri short-name
    myFn
    http://www.duyiedu.com

    add
    myfn.MyFunctions
    int add(int,int)

    4.在JSP中声明头信息
    <%@ taglib uri=”” prefix=””%>
    ${myFn:add()}
    自定义函数:一个类就可以存储多个函数,即函数就是方法。

    2.JSP可以使用标签 自定义标签 每一个标签都是一个单独的类
    1.创建一个类(用来描述一个标签)
    实现一个Tag接口 重写里面的方法

    2.细致的看一下这些方法
    两组对应的get/set 自己补全 并添加响应的私有属性
    还有一个单独的release方法 回收对象
    doStartTag
    doEndTag
    3.在两个方法内添加自己的逻辑
    4.描述一个”说明书” tld
    先描述uri和short-name
    myTag
    http://www.duyiedu.com/myTag
    再描述标签及标签内部的属性

    out
    mytag.MyOut
    JSP

    value
    true
    true


    5.创建JSP 声明头信息

    自定义标签:一个类只能存一个标签。

    public class MyOut implements Tag {

    1. //<c:out value="值"><br /> // body<br /> //</c:out><br /> // page
    2. private String value;<br /> public String getValue() {<br /> return value;<br /> }<br /> public void setValue(String value) {<br /> this.value = value;<br /> }
    3. public int doStartTag() throws JspException {<br /> return Tag.EVAL_BODY_INCLUDE;<br /> //return Tag.SKIP_BODY;<br /> }<br /> public int doEndTag() throws JspException {<br /> try {<br /> //可以获取out对象<br /> JspWriter out = this.pageContext.getOut();<br /> out.write(value+" 很帅!!!");<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }<br /> return Tag.EVAL_PAGE;<br /> //return Tag.SKIP_PAGE;<br /> }
    4. //============================================<br /> private Tag parent;<br /> public void setParent(Tag parent) {<br /> this.parent = parent;<br /> }<br /> public Tag getParent() {<br /> return this.parent;<br /> }
    5. private PageContext pageContext;<br /> public void setPageContext(PageContext pageContext) {<br /> this.pageContext = pageContext;<br /> }<br /> public PageContext getPageContext(){<br /> return this.pageContext;<br /> }
    6. public void release(){}<br />}