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 --- 这是Oraclejdbc驱动包
  • 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,主要是配数据源、SessionFactoryTransactionManager。然后根据你的习惯配置如何管理系统中用的bean,如果你喜欢用<bean>节点配,那你就写配置文件,如果你喜欢用注解配,那就打开组件扫描<context:component-scan>,同时对于TransactionManager的配置也是一样,看你喜欢配置文件还是注解,如果用注解,那么打开注解驱动<tx:annotation:driven>,简单吧。第二个是struts.xml,既然和Spring集成,那么Action的创建当然应该交给Spring,所以必须配一个常量【struts.objectFactory】,至于其他的配packageaction,用脚后跟都会吧。至于Hibernate的映射文件,还用说么?

 

下面才是重点,也就是如何在你的系统中同时使用jQueryDWR。说实话,到目前为止我也没有明白这两个家伙的侧重点到底是啥,有啥不同之处,应用场景是什么,还要再学习学习才行。但是从网上的资料来看,前者比较侧重于界面,有一大票的控件,后者好像更侧重与后台的交互。我只能说,我还不确定,也许不对,大家不要被我误导。

 

首先是将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属性的值需要特别注意,这个值一定是我们可以通过SpringgetBean(String 参数值)方法得到Bean的那个字符串参数值,否则一定不行。

 

其次,是修改web.xmldwrservlet配置起来,包括那些参数,不再赘述。

 

第三步,在WebRoot下建一个目录用来存放js文件和css文件,我估计是不能放在WEB-INF下的,否则从jsp文件中无法直接引用。

 

第四步,将jQueryjs文件down下来,如果你需要jQueryui,那么除了jQuery的核心js以外,还要jquery-ui.min.jsjquery-ui.css,因为前者需要后面的css文件才能运行。

 

第五步,在你的jsp文件中,首先按照dwr的规范将engine.jsutil.js加进来,如果你需要调用JavaBean,比如上面的ServiceBean,那么需要将它也加进来。src属性可以参照上一篇Blog

 

第六步,将jQueryjs加进来,写在dwrjs之后,一定是之后。至少在我这里是这样的,我把他们掉了个个,结果发现使用DWRUtil的时候报错。

 

第七步,由于jQuerydwruitl冲突,所以在写script方法时使用这种方式防止冲突:

var j = jQuery.noConflict();

然后jQuery定义的方法中的所有【$】符号用j代替。

 

至此,集成完毕,当然了css文件的导入也是必须的,我就没写了。记住一点,因为这些文件都被引入到jsp中,所以为了让你的页面能够引用它们,一定要加上${pageContext.request.contextPath},否则不行。还有就是如果发现某些css没有效果,检查一下这些css文件是否通过url引用了某些外部的资源,比如说图片等等,改一下就行了。

我的页面如下:

posted on 2011-01-19 19:09  wayne.wang  阅读(2997)  评论(0编辑  收藏  举报

导航