JForum源碼學習研究4-編寫action

[b]JForum展示層介紹[/b]
JForum論壇沒有使用主流的MVC框架,而是自己實現了一套簡單的MVC框架。

JForum的MVC框架和現在流行的Struts2一樣,使用了與web容器鬆耦合的設計,並沒有直接爲用戶暴露HttpServletRequest和HttpServletResponse接口,而是提供了net.jforum.context.RequestContext和net.jforum.context.ResponseContext這兩個接口,與Struts2不同的是JForum的action還是需要繼承net.jforum.Command這個對象,並非一個簡單的POJO。

JForum頁面顯示並沒有使用JSP,而是使用freemarker的模板,框架本身與freemarker耦合在了一起,並非像Struts2可以靈活的替換顯示方式。

[b]基本開發流程[/b]
開發JForum的Action非常簡單,首先我們要從幾個方面入手。

1.建立action
新建一個類繼承與net.jforum.Command

2.註冊action
到JForum的WEB-INF/config目錄找到[i]modulesMapping.properties[/i],在裏面配置一個模塊名稱和對應的類
如:test=net.jforum.view.test.TestAction

3.註冊模板
到JForum的WEB-INF/config目錄找到[i]templatesMapping.properties[/i]
在裏面配置一個模板名稱對應一個具體的顯示頁面(頁面默認都要放在templates/default目錄下)
如:test.show= test_show.htm
修改net.jforum.util.preferences.TemplateKeys類
在裏面配置常量
如:
public static final String TEST_SHOW = "test.show";

4.新建方法
private void show()
{
//選擇顯示模板
this.setTemplateName(TemplateKeys.TEST_SHOW);

//組裝模板變量
this.context.put("title", request.getParameter("title"););
this.context.put("description", request.getParameter("description"););
}


5.配置參數映射
到JForum的WEB-INF/config目錄找到[i]urlPattern.properties[/i]
在裏面配置參數
如:test.show.2 = title, description
模塊名稱.方法名稱.方法參數個數=參數1名稱,參數2名稱...

6.運行
完成以上操作後訪問
http://localhost:8080/test/show/arg1/arg2.page


這裏說一下JForum的url的解析方式,這裏舉個例子:
http://localhost:8080/test/show/arg1/arg2.page

這個Url的實際含義是:
http://localhost:8080/jforum/模塊名稱/方法名稱/參數1/參數2.page

[i]modulesMapping.properties[/i]中的配置:
test=net.jforum.view.test.TestAction
這裏的test就是模塊名稱

[i]urlPattern.properties[/i]中的配置:
test.show.2 = title, description
這裏的title和description就是參數1和參數
之後在action中通過
request.getParameter("description");
request.getParameter("title");
可以取得它們的值


小結:
在JForum中建立一個action應該說還是比較容易的,在這裏它選用freemarker做爲顯示方式想必也是爲了方便美工編輯和美化模板,畢竟對於美工來講htm編輯起來絕對是比jsp來的方便的。
發佈了2 篇原創文章 · 獲贊 0 · 訪問量 2162
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章