jQuery & DWR & SSH2
今天经过不懈的努力终于弄好了一个SSH2+DWR+jQuery的例子,不容易,毕竟我以前从来没有接触过这种形式的东西,我要好好的记下来。
首先是SSH2,也就是说Spring+Struts2+Hibernate。这是目前比较流行的Java Web应用开发模式。这个简单,关键是确保你的应用的类库千万不能冲突,否则的话光是找错就能累死你,因为这三个框架都使用了很多第三方jar包,这些jar包在三个框架里版本不同,有时候会冲突。所以先给大家把环境和jar包列表弄出来。
环境:Spring2.5.6+Struts2.1.8+Hibernate3.5.2
Jar包列表:
- antlr-2.7.6.jar;
- aspectjrt.jar
- aspectweaver.jar
- c3p0-0.9.1.2.jar --- 这是c3p0数据源的jar包,你可以选择DBCP,但是我不建议用。
- cglib-nodep-2.1_3.jar
- common-annotations.jar
- commons-collections-3.1.jar
- commons-fileupload-1.2.1.jar
- commons-logging.jar
- dom4j-1.6.1.jar
- dwr-1.1.1.jar --- DWR的驱动包
- freemarker-2.3.15.jar
- hibernate3.jar
- javassist-3.9.0.GA.jar
- jta-1.1.jar
- log4j-1.2.15.jar
- ognl-2.7.3.jar
- ojdbc5.jar --- 这是Oracle的jdbc驱动包
- slf4j-api-1.5.8.jar
- slf4j-log4j12-1.5.0.jar
- spring.jar
- spring-aop.jar
- spring-beans.jar
- spring-context.jar
- spring-context-support.jar
- spring-core.jar
- spring-jdbc.jar
- spring-orm.jar
- spring-tx.jar
- spring-web.jar
- struts2-core-2.1.8.1.jar
- struts2-spring-plugin-2.1.8.1.jar
- xwork-core-2.1.6.jar
兄弟们自己把这些jar包搞定,直接就可以集成SSH2了,简单的用脚后跟都能做出来,用不着像网上说的那样还分步骤。至于配置文件就不要我写了把,一共有两个,一个是Spring的配置文件applicationContext.xml,主要是配数据源、SessionFactory、TransactionManager。然后根据你的习惯配置如何管理系统中用的bean,如果你喜欢用<bean>节点配,那你就写配置文件,如果你喜欢用注解配,那就打开组件扫描<context:component-scan>,同时对于TransactionManager的配置也是一样,看你喜欢配置文件还是注解,如果用注解,那么打开注解驱动<tx:annotation:driven>,简单吧。第二个是struts.xml,既然和Spring集成,那么Action的创建当然应该交给Spring,所以必须配一个常量【struts.objectFactory】,至于其他的配package和action,用脚后跟都会吧。至于Hibernate的映射文件,还用说么?
下面才是重点,也就是如何在你的系统中同时使用jQuery和DWR。说实话,到目前为止我也没有明白这两个家伙的侧重点到底是啥,有啥不同之处,应用场景是什么,还要再学习学习才行。但是从网上的资料来看,前者比较侧重于界面,有一大票的控件,后者好像更侧重与后台的交互。我只能说,我还不确定,也许不对,大家不要被我误导。
首先是将DWR引入到应用中来,这个我已经讨论过了,可以看另一篇Blog。但是这里需要说明的是,由于整个能够应用是基于Spring框架管理bean的,所以DWR就不能自己创建JavaBean了,也就是说DWR需要从Spring容器个取得bean。为了实现这个目标,在dwr.xml配置文件中,我们应该这么配:
<create creator="spring" javascript="ServiceBean" >
<param name="beanName" value="serviceBean" >
</create>
而通常情况下,我们往往配置成:
<create creator="new" javascript="ServiceBean" >
<param name="class" value="xxx.yyy.zzz.ServiceBean" >
</create>
看出区别了么?其中第一个配置中的value属性的值需要特别注意,这个值一定是我们可以通过Spring的getBean(String 参数值)方法得到Bean的那个字符串参数值,否则一定不行。
其次,是修改web.xml将dwr的servlet配置起来,包括那些参数,不再赘述。
第三步,在WebRoot下建一个目录用来存放js文件和css文件,我估计是不能放在WEB-INF下的,否则从jsp文件中无法直接引用。
第四步,将jQuery的js文件down下来,如果你需要jQuery的ui,那么除了jQuery的核心js以外,还要jquery-ui.min.js和jquery-ui.css,因为前者需要后面的css文件才能运行。
第五步,在你的jsp文件中,首先按照dwr的规范将engine.js和util.js加进来,如果你需要调用JavaBean,比如上面的ServiceBean,那么需要将它也加进来。src属性可以参照上一篇Blog。
第六步,将jQuery的js加进来,写在dwr的js之后,一定是之后。至少在我这里是这样的,我把他们掉了个个,结果发现使用DWRUtil的时候报错。
第七步,由于jQuery和dwr的uitl冲突,所以在写script方法时使用这种方式防止冲突:
var j = jQuery.noConflict();
然后jQuery定义的方法中的所有【$】符号用j代替。
至此,集成完毕,当然了css文件的导入也是必须的,我就没写了。记住一点,因为这些文件都被引入到jsp中,所以为了让你的页面能够引用它们,一定要加上${pageContext.request.contextPath},否则不行。还有就是如果发现某些css没有效果,检查一下这些css文件是否通过url引用了某些外部的资源,比如说图片等等,改一下就行了。
我的页面如下:
posted on 2011-01-19 19:09 wayne.wang 阅读(3006) 评论(0) 编辑 收藏 举报