SpringSide默認的數據庫是hsql,但是大部分開發人員熟悉的數據庫是MySql,因此在實 際開發過程中,遇到的第一件事往往是修改數據庫。在SpringSide中修改數據庫很簡單,還 是以前一篇中創建的xkland項目為例,首先修改src\main\resources\config文件夾下的 jdbc.properties文件,注釋掉1、2行,解注釋7、8行,並修改10、11行的用戶名和密碼, 如下:
1#jdbc.driverClassName=org.hsqldb.jdbcDriver
2#jdbc.url=jdbc:hsqldb:res:/hsqldb/helloworld
3
4#jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
5#jdbc.url=jdbc:oracle:thin:@localhost:helloworld
6
7jdbc.driverClassName=com.mysql.jdbc.Driver
8jdbc.url=jdbc:mysql://localhost:3306/xkland? useUnicode=true&characterEncoding=utf8
9
10jdbc.username=xkland
11jdbc.password=xkland
其次是修改src\main\resources\config文件夾下的hibernate.properties文件,注釋掉 第一行,解注釋第二行,如下:
1#hibernate.dialect=org.hibernate.dialect.HSQLDialect
2hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
3#hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
4hibernate.show_sql=false
5hibernate.cache.use_query_cache=true
6hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
這個過程是簡單的,但是還有一件很重要的事情需要注意,那就是一定要記得把MySQL提 供的JDBC驅動mysql.jar拷貝到src\main\webapp\WEB-INF\lib文件夾下,否則,會遇到如下 錯誤:
SpringSide非常注重對i18n的支持,因此創建國際化的應用程序非常方便,只需要在 src\mian\resources\i18n文件夾下加入相應的資源文件即可。SpringSide默認使用UTF-8編 碼,這從web.xml中注冊的encodingFilter就可以看出來,當然也可以選擇自己喜歡的字符 編碼,比如GB2312。如果要修改字符編碼,一定要記住有四個地方要保持一致:
1、web.xml中的encodingFilter配置,如下:
<filter>
<filter-name>encodingFilter</filter-name>
<filter- class>org.springframework.web.filter.CharacterEncodingFilter</filter- class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
2、數據庫中的默認字符集,需要在創建數據表的時候指定,如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20),
`password` char(32),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
3、JDBC的連接設置,在src\main\resources\config\jdbc.properties中,如下:
jdbc.url=jdbc:mysql://localhost:3306/xkland? useUnicode=true&characterEncoding=utf8
4、JSP頁面中的頁面編碼,如下:
<%@ page contentType="text/html; charset=utf-8" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
只要將這四個地方設置為一致,JSP頁面顯示出來就應該不會是亂碼。歸根結底,是 SpringSide在web.xml中注冊的encodingFilter幫了大忙。但是,當需要從Struts的 resource bundle中讀取message的時候,就不是那麼方便了,因為需要創建如下的 messages_zh_CN.properties文件:
# -- direct output message --
message={0}
# -- crud message
entity.saved=\u6210\u529f\u4fdd\u5b58\u3002
entity.missing=\u627e\u4e0d\u5230\u6b64ID\u7684\u5bf9\u8c61\u3002
entity.deleted=\u6210\u529f\u5220\u9664\u3002
# -- validator errors --
errors.required={0} \u4e3a\u5fc5\u586b\u9879\u3002
errors.maxlength={0} \u4e0d\u80fd\u5927\u4e8e {1} \u4e2a\u5b57\u7b26\u3002
errors.minlength={0} \u4e0d\u80fd\u5c11\u4e8e {1} \u4e2a\u5b57\u7b26\u3002
errors.invalid={0} \u65e0\u6548\u3002
errors.byte={0} \u5fc5\u987b\u4e3abyte\u7c7b\u578b\u3002
errors.double={0} \u5fc5\u987b\u4e3adouble\u7c7b\u578b\u3002
errors.float={0} \u5fc5\u987b\u4e3afloat\u7c7b\u578b\u3002
errors.integer={0} \u5fc5\u987b\u4e3a\u4e00\u6570\u503c\u3002
errors.long={0} \u5fc5\u987b\u4e3along\u7c7b\u578b\u3002
errors.short={0} \u5fc5\u987b\u4e3ashort\u7c7b\u578b\u3002
errors.date={0} \u4e0d\u662f\u6709\u6548\u65e5\u671f\u683c\u5f0f\u3002
errors.range={0} \u672a\u5728 {1} \u4e0e {2} \u8303\u56f4\u5185\u3002
errors.creditcard={0} \u4e3a\u65e0\u6548\u4fe1\u7528\u5361\u53f7\u3002
errors.email={0} \u4e3a\u65e0\u6548\u90ae\u4ef6\u5730\u5740\u3002
errors.phone={0} \u4e3a\u65e0\u6548\u7535\u8bdd\u53f7\u7801\u3002
errors.zip={0} \u4e3a\u65e0\u6548\u90ae\u653f\u7f16\u7801\u3002
hello=\u4f60\u597d\uff0cSpringSide!
這種文件沒有可讀性,當然就更加不好編輯了,要生成這樣的文件,需要使用J2SDK提供 的命令行工具native2ascii.exe,為了加速開發和調試,可以編寫一個批處理文件 make_resource.bat,如下:
native2ascii -encoding utf-8 src\main\resources\i18n\temp.txt src\main\resources\i18n\messages_zh_CN.properties
然後,將該批處理文件注冊為Eclipse的外部工具,如下圖:
以後,需要修改messages的時候,先在temp.txt中修改,然後運行該外部工具即可。快 捷而方便。
沒有人能夠一氣呵成寫完一個項目然後再運行,所有的程序員都需要一邊修改代碼,一 邊運行程序以觀察修改的效果,如此反復進行。但是SpringSide提供的quickstart.bat存在 很多問題,造成了程序員不能夠快速部署程序,原因有二,一是quickstart.bat每次運行的 時候都需要重新構建項目,更新組件庫,然後啟動Tomcat服務器,太慢了;二是運行 quickstart.bat後,就算關閉控制台窗口,Tomcat服務器依然會在後台運行,以至於下次運 行quickstart.bat會出錯,提示不能清理文件。
要解決這兩個問題也不難,可以將springside根目錄下的misc\servers\tomcat-5.5.17 \bin目錄下的startup.bat和shutdown.bat注冊為Eclispe的外部工具,以達到快速啟動和快 速關閉Tomcat服務器的目的,如下圖:
此外,很多時候不需要重新啟動服務器,只需要把更改過的文件重新部署到服務 器就可以了,在springside的根目錄目錄下面,misc\servers\tomcat-5.5.17\webapps文件 夾中包含了所有的SpringSide項目。使用Windows自帶的命令行工具xcopy,可以將修改過的 .class文件、配置文件、資源文件和.jsp文件部署到服務器中。創建一個批處理文件 deploy.bat,如下:
xcopy src\main\webapp\*.jsp E:\springside-2.0\misc\servers\tomcat- 5.5.17\webapps\xkland /d /y
xcopy bin\*.* E:\springside-2.0\misc\servers\tomcat-5.5.17\webapps\xkland\WEB -INF\classes /s /d /y
xcopy src\main\resources\*.* E:\springside-2.0\misc\servers\tomcat-5.5.17 \webapps\xkland\WEB-INF\classes /s /d /y
xcopy src\main\webapp\WEB-INF\*.xml E:\springside-2.0\misc\servers\tomcat- 5.5.17\webapps\xkland\WEB-INF /d /y
其中/s選項為復制子目錄,/d選項為只復制更新過的文件,/y選項為不用詢問是否覆蓋。
然後再將該deploy.bat注冊為Eclipse的外部工具。這裡不截圖了,累贅。
當修改了Struts的配置文件和Action類之後,由於Struts只在Tomcat啟動時讀取一次配置文 件並緩存起來,而Action對象也只在第一次使用的時候創建一個實例,因此必須重新啟動服 務器才能看到效果,配合上面的deploy、stop_tomcat和start_tomcat外部工具使用,使得 部署和調試SpringSide應用程序更加快捷。