婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > JSP自定義標簽簡單入門教程

JSP自定義標簽簡單入門教程

熱門標簽:南京新思維電話機器人 百度地圖添加標注圖標樣式 南昌市地圖標注app 如何用中國地圖標注數字點 聊城智能電銷機器人外呼 泰州泰興400電話 怎么申請 好操作的電話機器人廠家 地圖標注市場怎么樣 企業怎么在聯通申請400電話

在sun官方文檔上有下面這樣一段話。

官方文檔聲明

public interface SimpleTag
extends JspTag
Interface for defining Simple Tag Handlers.
Simple Tag Handlers differ from Classic Tag Handlers in that instead of supporting doStartTag() and doEndTag(), the SimpleTag interface provides a simple doTag() method, which is called once and only once for any given tag invocation. All tag logic, iteration, body evaluations, etc. are to be performed in this single method. Thus, simple tag handlers have the equivalent power of BodyTag, but with a much simpler lifecycle and interface.

To support body content, the setJspBody() method is provided. The container invokes the setJspBody() method with a JspFragment object encapsulating the body of the tag. The tag handler implementation can call invoke() on that fragment to evaluate the body as many times as it needs.

A SimpleTag handler must have a public no-args constructor. Most SimpleTag handlers should extend SimpleTagSupport.

生存周期及調用流程

The following is a non-normative, brief overview of the SimpleTag lifecycle. Refer to the JSP Specification for details.

A new tag handler instance is created each time by the container by calling the provided zero-args constructor. Unlike classic tag handlers, simple tag handlers are never cached and reused by the JSP container.
The setJspContext() and setParent() methods are called by the container. The setParent() method is only called if the element is nested within another tag invocation.
The setters for each attribute defined for this tag are called by the container.
If a body exists, the setJspBody() method is called by the container to set the body of this tag, as a JspFragment. If the action element is empty in the page, this method is not called at all.
The doTag() method is called by the container. All tag logic, iteration, body evaluations, etc. occur in this method.
The doTag() method returns and all variables are synchronized.

簡單標簽使用小案例

必知必會:簡單標簽也是一個標簽,所以聲明的過程也Tag的一樣,同樣是三步。

1、建繼承SimpleTag類的實現類,重寫doTag方法
2、tld文件中進行嚴格的聲明
3、jsp頁面中taglib的命名空間及標簽前綴的聲明,然后進行調用自定義的簡單標簽

第一步:創建實現類:

package web.simpletag;
import java.io.IOException;
import java.io.StringWriter;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;


/**
 * 控制標簽體是否執行
 * @author Summer
 *
 */
public class BodyController extends SimpleTagSupport {
  static{
    /*
     * 簡單標簽整體的執行流程如下:
     * 1.瀏覽器向web服務器發送請求,然后web服務器調用servlet(jsp)
     * 2.complier解釋器進行初始化工作,先是調用setJspContext方法,將pageContext對象傳遞進去
     * 3.然后是看看此標簽的父標簽,即setParent方法
     * 4.再就是調用doTag方法了吧?但是要知道doTag內部會使用JspFragment對象,所以就必須先得到它,因此應該是調用setJspBody(JspFragment jspBody)方法
     * 5.最后是調用doTag 方法,執行相關的代碼邏輯
     */
  }

  /**
   * 簡單標簽可以使用這一個方法實現所有的業務邏輯
   */
  @Override
  public void doTag() throws JspException, IOException {
    //代表標簽體的對象
    JspFragment fragment = this.getJspBody();
    //fragment.invoke(null);是指將標簽中的內容寫給誰,null代表瀏覽器


    //1.修改標簽體的內容
//   fragment.invoke(null);


    //2.控制標簽體內容的重復輸出
//   for(int i=1;i=5;i++){
//     fragment.invoke(null);//設置為null,默認為向瀏覽器輸出
//   }


    //3.修改標簽體的內容
    PageContext context = (PageContext) fragment.getJspContext();
    StringWriter writer = new StringWriter();
    fragment.invoke(writer);
    String content = writer.getBuffer().toString();

    this.getJspContext().getOut().write(content.toUpperCase());

    //4.控制jsp頁面的執行與否,只需要掌握一個原理即可
    /*
     * SkipPageException - If the page that (either directly or indirectly) invoked this 
     * tag is to cease evaluation. A Simple Tag Handler generated from a tag
     * file must throw this exception if an invoked Classic Tag Handler
     *  returned SKIP_PAGE or if an invoked Simple Tag Handler threw
     *  SkipPageException or if an invoked Jsp Fragment threw a 
     *  SkipPageException.
     */
//   throw new SkipPageException();
  }


}

在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/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">

  description>JSTL 1.1 XML library/description>
  display-name>JSTL XML/display-name>
  tlib-version>1.1/tlib-version>
  short-name>x/short-name>
  uri>/simplesummer/uri>


  !-- 控制標簽體內容的的簡單標簽的自定義標簽 -->
  tag>
    name>BodyController/name>
    tag-class>web.simpletag.BodyController/tag-class>
    body-content>scriptless/body-content>
  /tag>
/taglib>

第三步:在jsp頁面中進行聲明然后調用:

%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
%@taglib uri="/simplesummer" prefix="summer"%>
!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>用SimpleTag接口實現的控制標簽體內容是否執行的測試頁面/title>
/head>
body>
  summer:BodyController>Summer/summer:BodyController>


/body>
/html>

總結:
簡單標簽可以替代BodyTag接口完成同樣的操作,但是有更加的簡單和輕便
簡單標簽lifeCycle邏輯清晰,調用規則明確
使用相關流對象就可以完成對標簽體的操控maniplate

以上就是本文的全部內容,希望對大家的學習有所幫助。

您可能感興趣的文章:
  • jsp struts1 標簽實例詳解
  • JSP自定義標簽Taglib實現過程重點總結
  • jsp 常用標簽的使用
  • jsp自定義標簽技術(實現原理與代碼以及平臺搭建步驟)
  • JSP自定義標簽獲取用戶IP地址的方法
  • JSP頁面中如何用select標簽實現級聯
  • jsp base標簽與meta標簽學習小結
  • jsp簡單自定義標簽的forEach遍歷及轉義字符示例
  • jsp頁面中如何將時間戳字符串格式化為時間標簽
  • JSP自定義分頁標簽TAG全過程

標簽:銅川 自貢 開封 吉林 烏蘭察布 山南 臨汾 白銀

巨人網絡通訊聲明:本文標題《JSP自定義標簽簡單入門教程》,本文關鍵詞  JSP,自定義,標簽,簡單,入門教程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《JSP自定義標簽簡單入門教程》相關的同類信息!
  • 本頁收集關于JSP自定義標簽簡單入門教程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩欧美一区二区视频| 日韩精彩视频在线观看| 99久久伊人精品| 国产精品99久久久| 26uuu精品一区二区| 日本一二三四高清不卡| 亚洲精品少妇30p| 五月天丁香久久| 麻豆精品视频在线| 欧美日韩一区三区四区| 日本韩国欧美在线| 精品国产在天天线2019| 亚洲素人一区二区| 青青草97国产精品免费观看无弹窗版| 日本美女一区二区| 国产99精品视频| 欧美色区777第一页| 国产日韩在线不卡| 一区二区日韩av| 不卡的av在线播放| 麻豆国产一区二区| 日韩三级免费观看| 成人丝袜18视频在线观看| 色婷婷久久久亚洲一区二区三区 | 丁香另类激情小说| 99国产精品久久久久| 欧美日韩视频在线观看一区二区三区| 精品久久一区二区| 亚洲一区二区免费视频| 91欧美一区二区| 中文字幕佐山爱一区二区免费| 国产风韵犹存在线视精品| 亚洲精品一线二线三线无人区| 亚洲最大成人综合| 不卡视频免费播放| 成人欧美一区二区三区视频网页| 国内国产精品久久| 久久亚洲捆绑美女| 日av在线不卡| 五月婷婷综合网| 国产精品视频一二三| 亚洲精品一区在线观看| 91精品国产综合久久精品app| 麻豆久久一区二区| 国产人成亚洲第一网站在线播放| 国产麻豆精品在线| 99久精品国产| 欧美日韩性生活| 99精品欧美一区二区三区小说| 国产资源精品在线观看| 亚洲伦理在线精品| 国产精品二三区| 亚洲国产精品av| 国产精品家庭影院| 欧美国产亚洲另类动漫| 精品粉嫩aⅴ一区二区三区四区| 91精品国产综合久久精品性色| av在线一区二区三区| av中文字幕亚洲| 成人教育av在线| 欧美日韩精品免费观看视频| 日韩西西人体444www| 久久99久久久久久久久久久| 欧美日韩在线播放一区| 午夜一区二区三区在线观看| 亚洲男同性视频| 亚洲视频在线一区| 日韩精品一级中文字幕精品视频免费观看| 视频一区在线视频| 国产精品一区二区果冻传媒| 91成人免费网站| 久久久久久免费| 亚洲午夜久久久久中文字幕久| 国内精品伊人久久久久影院对白| 99久久免费视频.com| 欧美一级艳片视频免费观看| 国产精品卡一卡二卡三| 九一九一国产精品| 91精品国产综合久久久久久漫画 | 亚洲欧美日韩一区二区三区在线观看| 亚洲一区二区三区四区的| 99热精品国产| 国产亚洲一区二区在线观看| 日韩精品在线网站| 欧美三级视频在线| 国产人妖乱国产精品人妖| 91婷婷韩国欧美一区二区| 26uuu另类欧美亚洲曰本| 日韩不卡免费视频| 91亚洲男人天堂| 3atv在线一区二区三区| 欧美激情在线观看视频免费| 国内外成人在线| 欧美日韩一区二区三区四区五区| 亚洲私人黄色宅男| 色综合一个色综合| 亚洲免费三区一区二区| eeuss国产一区二区三区| 中文字幕中文乱码欧美一区二区| 国产91精品欧美| 欧美国产日产图区| 91在线免费视频观看| 欧美中文字幕一区| 亚洲高清中文字幕| 制服.丝袜.亚洲.中文.综合| 午夜激情一区二区| 欧美va在线播放| 99国产精品视频免费观看| 亚洲一区二区三区精品在线| 精品国产制服丝袜高跟| 国产福利一区二区三区视频在线| 亚洲一卡二卡三卡四卡| 3d动漫精品啪啪1区2区免费| 国精产品一区一区三区mba视频| 在线观看一区不卡| 午夜视频在线观看一区二区三区 | 欧美日韩国产综合一区二区 | 日韩va欧美va亚洲va久久| 久久色中文字幕| 成人aaaa免费全部观看| 国产精品一区二区黑丝| 亚洲美女视频在线| 欧美一级片在线| 国产九色sp调教91| 亚洲国产精品自拍| 久久久久久久久蜜桃| 一本大道av伊人久久综合| 久久精品国产成人一区二区三区 | 免费黄网站欧美| 亚洲男人的天堂在线aⅴ视频| 国产亚洲一本大道中文在线| 精品亚洲aⅴ乱码一区二区三区| 亚洲欧洲综合另类| 亚洲第一二三四区| 亚洲图片激情小说| 国产亚洲婷婷免费| 欧美一区国产二区| 91精品国产麻豆| 欧美视频在线不卡| 色天天综合久久久久综合片| 国产精品69毛片高清亚洲| 国产乱码精品一区二区三区忘忧草 | 亚洲欧美日韩国产综合| 精品捆绑美女sm三区| 久久婷婷国产综合国色天香| 国产肉丝袜一区二区| 久久久久久久久99精品| 日韩免费性生活视频播放| 欧美变态tickling挠脚心| 国产日韩三级在线| 欧美sm美女调教| av亚洲精华国产精华| 日本女人一区二区三区| 一区二区在线免费观看| 日韩一二三区视频| 欧美三级蜜桃2在线观看| 国产精品1024久久| 性感美女久久精品| 国产精品毛片无遮挡高清| 91精品国产乱码| 日韩欧美第一区| av在线这里只有精品| 国内成人精品2018免费看| 亚洲最新视频在线播放| 中文字幕日韩精品一区| 久久久精品人体av艺术| 欧美成人在线直播| 精品国产a毛片| 久久久久久**毛片大全| 日韩精品在线看片z| 欧美日韩极品在线观看一区| 一本色道a无线码一区v| 欧美视频一区二区三区四区| 91在线码无精品| 99精品久久只有精品| 色香色香欲天天天影视综合网| 91精品国产综合久久香蕉的特点 | 成人午夜电影小说| 99国内精品久久| 91激情五月电影| 欧美精品一区二区三区蜜桃视频| 欧美mv和日韩mv的网站| 亚洲人成电影网站色mp4| 午夜欧美一区二区三区在线播放| 激情综合色综合久久综合| 国产不卡视频在线播放| 欧美猛男超大videosgay| 久久精品水蜜桃av综合天堂| 亚洲福利一二三区| aaa欧美日韩| 国产精品伦理在线| 亚洲 欧美综合在线网络| 国产高清无密码一区二区三区| 欧美区一区二区三区| 亚洲欧美国产高清| 91在线码无精品| 一区二区三区四区不卡视频| 国产98色在线|日韩| 久久精品夜夜夜夜久久| 国产一区二区三区免费播放|