使用Velocity作為View
采用Velocity作為View的最大的優點是簡潔,能通過簡單明了的語法直接在Html中輸出Java變量。Velocity本身是一個模板引擎,通過它來渲染Model輸出Html非常簡單,比如顯示用戶名:
<b>${account.username}</b>
換成JSP不得不寫成:
<b><%=account.getUsername()%></b>
而<%...%>標記在Dreamwaver中無法直接看到其含義。如果需要在標簽中嵌入JSP就更晦澀了:
<a href="somelink?id=<%=id %>">Link</a>
這種嵌套的標簽往往使得可視化Html編輯器難以正常顯示,而Velocity用直接嵌入的語法解決了“ ”的問題。
在Spring中集成Velocity是非常簡單的事情,甚至比單獨使用Velocity更簡單,只需在dispatcher-servlet.xml中申明:
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
</bean>
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath"><value>/</value></property>
<property name="configLocation"><value>/WEB-INF/velocity.properties</value></property>
</bean>
雖然標準的Velocity模板以.vm命名,但我們的所有Velocity模板頁均以.html作為擴展名,不但用Dreamwaver編輯極為方便,甚至可以直接用IE觀看頁面效果。
實現Skin
許多Blog系統都允許用戶選擇自己喜歡的界面風格。要實現Skin功能非常簡單,為每個Skin編寫Velocity模板,存放在web/skin/目錄下,然后在Controller中返回對應的視圖:
String viewpath = skin.getSkin(account.getSkinId()) + "viewArticle";
由于使用了MVC模式,我們已經為每個頁面定義好了Model,添加一個新的skin非常容易,只需要編寫幾個必須的.html文件即可,可以參考現有的skin。
SkinManager的作用是在啟動時自動搜索/skin/目錄下的所有子目錄并管理這些skin,將用戶設定的skinId映射到對應的目錄。目前只有一個skin,您可以直接用可視化Html編輯器如Dreamwaver改造這個skin。
附加功能
實現圖片上傳
用戶必須能夠上傳圖片,因此需要文件上傳的功能。比較常見的文件上傳組件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/)和COS FileUpload(http://www.servlets.com/cos),Spring已經完全集成了這兩種組件,這里我們選擇Commons FileUpload。
由于Post一個包含文件上傳的Form會以multipart/form-data請求發送給服務器,必須明確告訴DispatcherServlet如何處理MultipartRequest。首先在dispatcher-servlet.xml中聲明一個MultipartResolver:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設置上傳文件的最大尺寸為1MB -->
<property name="maxUploadSize">
<value>1048576</value>
</property>
</bean>
文章來源于領測軟件測試網 http://www.kjueaiud.com/