日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSP页面的继承(extends)

發(fā)布時間:2024/4/17 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSP页面的继承(extends) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.分析 運用過python django模板的應該清晰,django里邊有一個激動人心的功用就是模板能夠運用類的承繼聯(lián)系。 即模板是能夠承繼的,而且不限承繼的層次。 如 1. child.html extends base.html 2.?grandchild.html extends child.html 這樣,咱們在base.html中界說好html規(guī)劃,然后在“子類”(咱們這樣稱號吧)重界說需求父頁面內(nèi)容即可 2.jsp承繼示例 如今咱們來看jsp中怎么完成此功用(django與下面的聲明相似)。 父頁面: base.jsp,界說規(guī)劃 Jsp代碼??
  • <%@?taglib?uri="http://www.rapid-framework.org.cn/rapid"?prefix="rapid"?%>??
  • ??
  • ???"head">base_head_content??
  • ??
  • ???
    ??
  • ???"content">base_body_content??
  • ??
  • ??
  • 子頁面: child.jsp Jsp代碼??
  • <%@?taglib?uri="http://www.rapid-framework.org.cn/rapid"?prefix="rapid"?%>??
  • <%?//重界說父頁面的內(nèi)容為content的內(nèi)容?%>??
  • "content">??
  • ????child_body_content??
  • ??
  • ???
  • ??
  • <%@?include?file="base.jsp"?%>??
  • 如上: 咱們運用了兩個jsp tag: block,override,還有<@include >指令. 下面描繪各個功用:
    • override tag: ?會將標簽里邊的內(nèi)容保存為pageContext的變量,變量稱號為name的特點加前綴,如 __override__$name = tag內(nèi)容
    • block tag: ?依據(jù)name特點稱號,若是發(fā)現(xiàn)__override__$name變量,則顯現(xiàn)被重界說的內(nèi)容,不然顯現(xiàn)本身tag的內(nèi)容.
    • <%@include >指令: 經(jīng)過該指令來完成承繼(extends)的功用(只能運用這個竅門),該指令有必要放置在頁面的最后面?

    輸出:

    直接拜訪base.jsp輸出: Html代碼??
  • <html>??
  • ?base_head_content??
  • <body>??
  • ?<br?/>??
  • ?base_body_content??
  • body>??
  • html>??
  • 拜訪child.jsp輸出: Html代碼??
  • <html>??
  • ?base_head_content??
  • <body>??
  • ?<br?/>??
  • ?child_body_content??
  • body>??
  • html>??
  • ?能夠看到,child.jsp的的body輸出內(nèi)容被重界說了. 現(xiàn)該tag能夠完成jsp的無限級的承繼聯(lián)系. 即 grandchild.jsp 承繼 child.jsp , child.jsp承繼 base.jsp? 3.詳細完成方法: Block Tag: Java代碼??
  • public?class?BlockTag?extends?TagSupport{??
  • ???
  • ?private?String?name;??
  • ???
  • ?public?void?setName(String?name)?{??
  • ??this.name?=?name;??
  • ?}??
  • ???
  • ?@Override??
  • ?public?int?doStartTag()?throws?JspException?{??
  • ??return?getOverriedContent()?==?null???EVAL_BODY_INCLUDE?:?SKIP_BODY;??
  • ?}??
  • ???
  • ?@Override??
  • ?public?int?doEndTag()?throws?JspException?{??
  • ??String?overriedContent?=?getOverriedContent();??
  • ??if(overriedContent?==?null)?{??
  • ???return?EVAL_PAGE;??
  • ??}??
  • ????
  • ??try?{??
  • ???pageContext.getOut().write(overriedContent);??
  • ??}?catch?(IOException?e)?{??
  • ???throw?new?JspException("tag?output?error",e);??
  • ??}??
  • ??return?EVAL_PAGE;??
  • ?}??
  • ???
  • ?private?String?getOverriedContent()?{??
  • ??String?varName?=?Utils.getOverrideVariableName(name);??
  • ??return?(String)pageContext.getAttribute(varName);??
  • ?}??
  • }??
  • Override Tag: Java代碼??
  • public?class?OverrideTag?extends?BodyTagSupport{??
  • ????
  • ?private?String?name;??
  • ???
  • ?public?void?setName(String?name)?{??
  • ??this.name?=?name;??
  • ?}??
  • ???
  • ?@Override??
  • ?public?int?doStartTag()?throws?JspException?{??
  • ??return?isOverrided()???SKIP_BODY?:?EVAL_BODY_BUFFERED;??
  • ?}??
  • ???
  • ?@Override??
  • ?public?int?doEndTag()?throws?JspException?{??
  • ??if(isOverrided())?{??
  • ???return?EVAL_PAGE;??
  • ??}??
  • ??BodyContent?b?=?getBodyContent();??
  • ??String?varName?=?Utils.getOverrideVariableName(name);??
  • ??pageContext.setAttribute(varName,?b.getString());??
  • ??return?EVAL_PAGE;??
  • ?}??
  • ???
  • ?private?boolean?isOverrided()?{??
  • ??String?varName?=?Utils.getOverrideVariableName(name);??
  • ??return?pageContext.getAttribute(varName)?!=?null;??
  • ?}??
  • ????
  • }??
  • 東西類: Java代碼??
  • class?Utils?{??
  • ?public?static?String?BLOCK?=?"__override__";??
  • ?public?static?String?getOverrideVariableName(String?name)?{??
  • ??return?BLOCK?+?name;??
  • ?}??
  • }??
  • 能夠看到,完成代碼不需求100行,重要是的完成竅門,由此,你從此能夠拋棄運用sitemesh. 而且如上完成方法具有更高功用。 而且筆者也擴大了freemarker模板,經(jīng)過自界說指令,完成如上一樣的功用。 作者: 唐山

    轉(zhuǎn)載于:https://www.cnblogs.com/fpqqchao/archive/2013/01/03/2842605.html

    總結(jié)

    以上是生活随笔為你收集整理的JSP页面的继承(extends)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。