<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    京山游俠

    專注技術,拒絕扯淡
    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插件搞定?
    主站蜘蛛池模板: av在线亚洲欧洲日产一区二区| 嫩草影院在线播放www免费观看| 亚洲熟妇中文字幕五十中出| 亚洲精品无码永久在线观看男男| 亚洲黄色免费电影| 亚洲黄色免费网站| 16女性下面无遮挡免费| 亚洲日本在线免费观看| 我要看WWW免费看插插视频| 亚洲卡一卡二卡乱码新区| 免费看一级一级人妻片| 国产精品高清全国免费观看| 亚洲国产精品成人午夜在线观看| 手机看片国产免费永久| 亚洲av日韩av激情亚洲| 在线a免费观看最新网站| 亚洲午夜在线播放| 久久国产精品免费专区| 在线免费观看亚洲| a级毛片无码免费真人| 美女露100%胸无遮挡免费观看| 日本免费网站视频www区| 亚洲午夜精品久久久久久app| 国产大片线上免费看| 国产成人无码免费看片软件| 亚洲AV无码久久精品成人| 麻豆高清免费国产一区| 亚洲精品无码成人| 狠狠综合久久综合88亚洲| 182tv免费观看在线视频| 看全免费的一级毛片| 亚洲成人免费在线| 成人免费视频国产| 日韩精品无码免费专区午夜| 激情内射亚洲一区二区三区| 全免费a级毛片免费看无码| 亚洲一区二区三区高清不卡| 亚洲精品动漫人成3d在线| 精品熟女少妇av免费久久| 国产精品亚洲va在线观看| 亚洲av无码成人黄网站在线观看 |