1.分析
運用過python django模板的應該清晰,django裡邊有乙個激動人心的功用就是模板能夠運用類的承繼聯絡。 即模板是能夠承繼的,而且不限承繼的層次。
如1. child.html extends base.html
2. grandchild.html extends child.html
這樣,咱們在base.html中界說好html規劃,然後在「子類」(咱們這樣稱號吧)重界說需求父頁面內容即可
2.jsp承繼示例
如今咱們來看jsp中怎麼完成此功用(django與下面的宣告相似)。
父頁面: base.jsp,界說規劃
<%@ taglib uri="" prefix="rapid" %>
"head">base_head_content
"content">base_body_content
子頁面: child.jsp
<%@ taglib uri="" prefix="rapid" %>
<% //重界說父頁面的內容為content的內容 %>
"content">
child_body_content
<%@ include file="base.jsp" %>
如上: 咱們運用了兩個jsp tag: block,override,還有<@include >指令.
下面描繪各個功用:
直接拜訪base.jsp輸出:
<
html
>
base_head_content
<
body
>
<
br/>
base_body_content
body>
html>
拜訪child.jsp輸出:
<
html
>
base_head_content
<
body
>
<
br/>
child_body_content
body>
html>
能夠看到,child.jsp的的body輸出內容被重界說了.
現該tag能夠完成jsp的無限級的承繼聯絡. 即 grandchild.jsp 承繼 child.jsp , child.jsp承繼 base.jsp
3.詳細完成方法:
block tag:
public
class blocktag extends tagsupport
@override
public
int dostarttag() throws jspexception
@override
public
int doendtag() throws jspexception
try catch (ioexception e)
return eval_page;
} private string getoverriedcontent()
} override tag:
public
class overridetag extends bodytagsupport
@override
public
int dostarttag() throws jspexception
@override
public
int doendtag() throws jspexception
bodycontent b = getbodycontent();
string varname = utils.getoverridevariablename(name);
pagecontext.setattribute(varname, b.getstring());
return eval_page;
} private
boolean isoverrided()
} 東西類:
class utils
} 能夠看到,完成**不需求100行,重要是的完成竅門,由此,你從此能夠拋棄運用sitemesh. 而且如上完成方法具有更高功用。
而且筆者也擴大了freemarker模板,經過自界說指令,完成如上一樣的功用。
jsp頁面的位址
1 是jsp取得絕對路徑的方法,等價於 也就是取出部署的應用程式名或者是當前的專案名稱 比如我的專案名稱是demo1在瀏覽器中輸入為 http localhost 8080 demo1 a.jsp 或取出來的就是 demo1,而 代表的含義就是http localhost 8080 故有時候專案中這...
jsp頁面的base標籤
我們在用ide工具生成jsp頁面時通常都包含下面的兩段 string path request.getcontextpath string basepath request.getscheme request.getservername request.getserverport path 它們絕對...
JSP頁面的執行過程
當客戶端瀏覽器,向伺服器發出訪問乙個jsp頁面的請求時 伺服器根據該請求載入相應的jsp頁面,並對該頁面進行編譯,然後執行 1 客戶端通過瀏覽器,向伺服器發出請求,在該請求中包含了請求的資源和路徑,這樣,當伺服器接收到該請求後,就可以知道被請求的資源 2 伺服器根據接收到的客戶端的請求,來載入被請求...