程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp template之我見

jsp template之我見

編輯:關於JSP

我們在做程序的過程中,常常會遇到這樣一種情況,就是在一個項目中,會發現有很多頁面的框架基本相同的,只是具體顯示的內容不同,而按常規的做法,我們可能會用include語句來提出框架內容,然後在每個頁面中引用這些框架,但這樣就會產生一個問題,如果我的框架發生變化了,那應該怎麼辦呢?舉個例子,一個index.jsp(SUN企業級應用的首選)可能包含有head.jsp(SUN企業級應用的首選)和foot.jsp(SUN企業級應用的首選)。而其它頁面也同樣包含這兩個jsp(SUN企業級應用的首選)。但如果我在index.jsp(SUN企業級應用的首選)裡有一段導航條的代碼,我現在想在每個頁面裡引用,而不想加到head.jsp(SUN企業級應用的首選)中,難道我們要在每個頁面裡都增加這個導航條的代碼嗎?我想我是不會這樣做的。因為有一種更好的辦法來解決這種問題。那就是采用模板頁面。

template頁面的原理,其實就是寫一個servlet來實現頁面的跳轉,然後在web.xml(標准化越來越近了)裡面配置這個servlet,使要使用模板的這一類jsp(SUN企業級應用的首選)文件,都通過這個servlet來處理,使它們都轉到模板頁面即可。然後在模板頁面中include這些頁面的內容頁即可。

具體的做法,只要寫一個template.jsp(SUN企業級應用的首選)做為模板頁面、一個TemplateDispatch.java做為跳轉的類就可以了。然後在調用時,直接指向這個SERVLET,加一個參數,說明要用到哪個內容頁就行了。寫個簡單的例子如下:
template.jsp(SUN企業級應用的首選)
=====================================
<% page contentType="text/html; charset=gb2312"%>
<%@ include file=“head.jsp(SUN企業級應用的首選)“%>
<%=(String)request.getAttribute(“body“)%>
<%@ include file=“foot.jsp(SUN企業級應用的首選)“%>

TemplateDispatch
=====================================
public class TemplateDispatchextends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response){
         doPost(request,response);  
 }
    public void doPost(HttpServletRequest request,HttpServletResponse response){
        HttpSession session = request.getSession(true);
session.setAttribute(“body“,“index.jsp(SUN企業級應用的首選)“);
        RequestDispatcher rd = session.getServletContext().getRequestDispatcher("template.jsp(SUN企業級應用的首選)");
        rd.forward(request,response);
}
}

web.xml(標准化越來越近了)
=====================================
  <servlet>
    <servlet-name>dispatch</servlet-name>
    <servlet-class>TemplateDispatchextends </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatch</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

代碼是即興寫的,沒有做過測試,只是表達一下意思。
===========================================

如果覺得簡單的話,還可以擴展一下。通過配置文件配置內容頁,以及taglib來定義兩個標簽insert用來增加內容頁、value用來在模板裡直接顯示內容。

現在在回頭想想前面提到的問題,是不是會比較容易解決了呢?如果頁面有什麼變動的話,只要修改一下模板頁就可以了。這樣還不會犯漏掉哪個頁面的錯誤。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved