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來的方便的。