京山游俠

          專注技術,拒絕扯淡
          posts - 50, comments - 868, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          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文件夾下,否則,會遇到如下錯誤:
          14.JPG

          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的外部工具,如下圖:
          15.JPG

          以后,需要修改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服務器的目的,如下圖:
          16.JPG

          17.JPG

          此外,很多時候不需要重新啟動服務器,只需要把更改過的文件重新部署到服務器就可以了,在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應用程序更加快捷。


          評論

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2006-12-24 09:27 by laojang
          很好.有學到了不少,繼續

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2006-12-24 11:28 by errorfun
          要注意的是保存文件時的編碼也要調成一致的,要不也會亂碼。不過ECLIPSE好像有根據JSP頁面設置的ENCODING設置默認編碼的智能,一定也就不會有問題了

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2006-12-24 16:24 by BeanSoft
          先說一下啊, 偶不熟悉 Eclipse 插件開發, 不過關于你們這個 Tomcat 啟動的功能其實直接借鑒 Eclipse Tomcat 插件(Sysdeo): http://www.sysdeo.com/eclipse/tomcatplugin
          這個插件可以讓您無需離開 Eclipse 就可以進行 Tomcat 的啟動, 停止, 發布, 重新載入 Web 應用, 十分方便. 而且插件個頭也不大, 帶源碼. 我翻譯的中文版:
          截圖: http://gro.clinux.org/frs/download.php/1318/tomcatPlugin.gif
          下載: http://download.gro.clinux.org/beansoft/tomcatPluginV31.zip

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2006-12-24 16:38 by 海邊沫沫
          呵呵,在我沒有遇到SpringSide之前,我也是一直使用的這個插件。
          SpringSide自帶一個精簡版的Tomcat,而我的系統上另外還安裝有一個Tomcat,在使用SpringSide進行開發的時候,我覺得我以上的幾個腳本更加能夠簡單的解決問題。

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2006-12-24 16:41 by BeanSoft
          不好意思,我還以為你是SpringSide的開發人員呢...

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2006-12-25 09:02 by 江南白衣
          謝謝游俠阿,游俠的文檔寫得比開發人員還詳細。

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2007-01-21 09:49 by hcom
          將ss自帶的tomcat注冊為eclipse外用的tomcat就可以了吧?不需要將tomcat啟動和關閉文件注冊為eclipse的外部工具了吧?

          我用的是eclipse+wtp

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2007-04-05 10:54 by 愛好者
          真沒有想到會有這么好的文章,這里先謝過了!我會支持下去的,我還是一個小小鳥,不知道什么時候會到達這樣程度,我得加油了。

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2007-07-05 21:21 by 周黎明
          我的項目里src\java\resources\config文件夾下好像沒有hibernate.properties文件呀!

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2007-07-16 21:03 by 海邊沫沫
          我使用的是2.0 M1版,如果你使用的是2.0rc1版,這些目錄結構就不一樣的。具體問題具體分析。

          # re: SpringSide開發實戰(二):修改數據庫、字符編碼和快速部署應用程序  回復  更多評論   

          2008-02-29 19:12 by kongzong
          messages_zh_CN.properties的編輯是不是可以用Properties Editor插件搞定?
          主站蜘蛛池模板: 长武县| 乐亭县| 出国| 延寿县| 垦利县| 墨竹工卡县| 临城县| 仙居县| 安陆市| 宝兴县| 靖远县| 汤阴县| 靖江市| 无棣县| 永和县| 绥滨县| 莎车县| 玉林市| 石台县| 禄劝| 黑水县| 锦州市| 玉门市| 秭归县| 金华市| 马龙县| 伊金霍洛旗| 台东县| 高州市| 永靖县| 西丰县| 新建县| 延川县| 静海县| 连云港市| 五家渠市| 万全县| 尚义县| 奎屯市| 玉田县| 南投市|