Spring mvc 例項--使用velocity檢視,解決中文亂碼問題
上個星期讀了一些spring mvc原始碼,現在可以將之前的寫的簡單的例子貼出來,為以後的開發作些準備。
這是一個非常簡單的例子,就是使用SimpleFormController實現spring mvc的例子。
首先,在web.xml上配置DispatcherServlet。
上面配置了DispatcherServlet,而且所有的以htm,vm結尾的url請求都被DispatcherServlet處理。
如果還有用到spring的其他技術的話就需要上面的listener了。
接下來我們看一下控制器類。
referenceData()方法是為頁面初始渲染提供必要的資料。onSubmit()方法是在處理此對應頁面提交時資料,並轉向另外一個頁面。
這是一個簡單的例子,所以我們發出一個URL請求時只用用到referenceData()的方法體。
我們發出這樣的URL請求:
http://localhost:8080/winking/home.vm 或http://localhost:8080/winking/home.htm.
然後到這樣一個頁面v.vm:
接下來就是核心的配置檔案了,上面web.xml裡的servlet名稱是winking,所以DispatcerServlet會找winking-servlet.xml.
這樣子就可以了。
當然上面還是要注意的地方,就是中文問題。
1.需要在vm模板檔案加上:<meta http-equiv="Content-Type" content="text/html; charset=GBK">
2.在"velocityConfigurer"加上
<property name="velocityProperties">
<props>
<prop key="input.encoding">GBK</prop>
<prop key="output.encoding">GBK</prop>
</props>
</property>
3.在"viewResolver"加上<property name="contentType">
<value>text/html;charset=GBK</value>
</property>
最主要是確保所有的字符集都是統一的。
上面四個property很簡單,前面兩個是在模板方便處理時間和數字格式顯示。
後面兩個是在vm模板能夠訪問request和session的資料。
另外還需要一般性的配置,就是在web.xml配置filter
這樣子就完全解決了spring mvc velocity的中文問題了。