SpringSide开发实战(二):修改数据库、字符编码和快速部署应用程序

来源:互联网 发布:淘宝配眼镜哪家好 编辑:程序博客网 时间:2024/05/17 06:30
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(11NOT 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应用程序更加快捷。

 
原创粉丝点击