实践 DWR Spring Hibernate整合

目标:

利用当前流行框架DWR、Spring和Hibernate创建一个简单的WEB实例,力求简单却又能充分体现上述框架各自特性和重要技术。

业务简述:

1、注册新用户,新用户注册时需要输入用户名称和用户密码;

2、用户登录,登录时需要输入用户名称和用户密码;

3、登录用户可以修改EMail信息;

系统架构及框架应用简述:

DWR最显著的一个特性是能够将服务器端的Java对象以JS对象的形式暴露给浏览器,使得远程通讯变得非常简单方便。
例如:服务器端有个名为UserManager的公开服务对象,提供用户登录、用户注册、用户修改信息方法。
public interface UserManager {
 public User login(User user,HttpSession session) throws SystemException;
 public User regist(User user,HttpSession session) throws SystemException;
 public User modify(User user,HttpSession session) throws SystemException;
}
在WEB-INF目录下,创建dwr.xml文件,部分内容如下:
<dwr>
 <allow>
  <create creator="new" javascript="userManager">
   <param name="class" value="demo.service.UserManager" />
   <include method="regist" />
   <include method="login" />
   <include method="modify" />
  </create>
  <convert match="demo.model.*" converter="bean"></convert>
 </allow>
</dwr>
该配置指定DWR框架公开服务器端的demo.service.UserManager对象并自动生成文件名为userManager.js的JavaScript脚本,提供名为“regist”、“login”、“modify”几个方法的访问方法。
同时为demo.model包下的所有bean声明转换器,使得JavaScript对象和Java对象通讯时能够正确识别demo.model包下的所有bean。

修改web.xml文件配置好DWR框架,部分内容如下:
 <servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>
该配置指定了DWR中的一个服务Servlet,开启debug模式,debug模式下URL在上下文后面加上 /dwr/ 就可以访问DWR自动生成debug页面。

浏览器端访问通过userManager.js脚本,访问服务器端的UserManager对象的方法的代码片断如下:

<td><a href="" onClick="showLogin();">登录</a></td>
function login() {
 var user = checkNameAndPWD();
 if(user != null) {
  userManager.login(user,loginCB);
 }
}
访问服务器提交数据告别了传统的表单提交方式,好处是非常明显的。
DWR配置好后,浏览器端可以获得DWR自动生成的engine.js和util.js,它们提供了很多系统设置和页面操作的方法。
DWREngine.setErrorHandler 可以为浏览器设定全局的错误处理句柄,为发生错误及服务器端抛出异常提供统一的处理入口,本实践充分滥用了该方法,系统错误和业务错误我都使用了该方法。
如果希望自己定义的XXXException能够被客户端脚本错误处理句柄处理,需要在dwr.xml中声明该异常的转换器,如下所示:
<convert match="demo.service.SystemException" converter="bean"></convert>
如果只定义了该异常转换器,可能会导致服务器端出现报告

 严重: No converter found for 'java.lang.StackTraceElement'  的错误,

解决方法是继续增加异常的转换器,如下所示:
<convert match="java.lang.StackTraceElement" converter="bean"/>
 或者
<convert match="java.lang.Exception" converter="exception">
 <param name='include' value='message,lineNumber' />
</convert>
DWR 1.0中还提供了warningHandler,2.0中增加了textHtmlHandler。
AJAX应用中通常容易忽视安全问题,某些业务逻辑的方法应该是以认证的用户才能使用的,可以定义AOP的Advisor进行处理。

其它方法及DWR的其它特性,这里不再赘述。

Sping的特性很多,本实践大致利用了它以下几个特性:
1、Bean的注入;
2、DAO的包装;
3、事务管理;
4、AOP;

Hibernate这里就更不用说了,ORM的好玩意。

IDE:

Eclipse3.3 IDE 平台

WTP2.0 J2EE 插件

Hibernate tools Eclipse IDE plugin 3.2.0 beta 10

Spring IDE

框架:

DWR

Hibernate

Spring

参考资源:
DWR:http://getahead.org/dwr

Hibernate & Hibernate tools Eclipse IDE plugin 3.2.0 beta 10:www.hibernate.org

Spring IDE for Eclipse在线安装网址:http://springide.org/updatesite/  

本案例lib目录下所需Jar比较大,就不上传了,清单如下:

mysql-connector-java-5.0.7-bin.jar
dwr.jar
spring.jar
spring-jdbc.jar
hibernate3.jar
spring-orm.jar
dom4j-1.6.1.jar
jta.jar
commons-collections.jar
cglib-2.1.3.jar
asm.jar
antlr-2.7.6.jar
aopalliance.jar
commons-logging.jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值