该程序的完整代码下载地址:http://download.csdn.net/detail/yanglun1/8779629
首先来说明一些什么是DWR,它能用来做什么?
DWR(Direct Web Remoting)是一个用于改善Web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含Ajax技术的网站。它可以允许在浏览器里的代码调用运行在Web服务器上的java方法,就像它就在浏览器里一眼。它包含两个主要部分:一部分允许JavaScript从Web服务器上一个遵循了Ajax原则的Servlet或Action中获取数据;另一部分是一个JavaScript库可以帮助网站开发人员 轻松地利用获取的数据来动态改变网页的内容。
比较一下jQuery和DWR:首先要说的就是jQuery是一个.js文件,DWR则是一个.jar文件;再有就是它们的主要功能肯定是不相同的,jQuery的特点是前端功能强大、灵活,对页面中的DOM控制自如,但在MVC或是JSP+JAVABEAN+SERVLET模式中,前端页面的JavaScript如果要读取后台Java类中的方法或属性,此时jQuery就显得有点苍白无力。不过还好,DWR可以帮助我们解决这一问题。将jQuery和DWR配合起来实现struts的Ajax是不是会很完美,的确是这样的。因为DWR有强大的Java类属性读取功能,而jQuery有灵活、强大的前台DOM操作功能,也就是DWR负责实现在JavaScript中调用远程java方法,而获取的数据则交给jQuery显示出来。
下面就针对DWR框架来做我们第一个小程序。
首先我们需要的是两个.jar包,一个是commons-logging-1.0.4.jar,该包是日志控制文件,如果没有该jar包,控制台会报告日志控制方面的错误,一个则是我们的核心jar包dwr.jar。
还是像以往项目博客一样,先看整体目录结构:
其中要解释一点,其中的ajaxserver.jsp和index2.jsp是我之前写的东西,在此不涉及,我也不想在项目中删除,还请忽略。
再接下来要做的就是配置DWR框架,就像web.xml文件一样,我们需要在WEB-INF下创建dwr.xml配置文件。dwr.xml的配置信息如下:
<dwr>
<allow>
<!-- javascript指定在Javascript代码中访问对象时使用的名称 -->
<create creator="new" javascript="Hello">
<param name="class" value="com.dwr.HelloWorldAction"></param>
</create>
</allow>
</dwr>
<dwr>标签用来包含DWR所有的配置信息,处于最顶层。在其下还有以下标签:<allow>标签中可以暴露给JavaScript访问的东西
<create>指定JavaScript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定Java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例。JavaScript="testClass"属性指定JavaScript代码访问对象时使用的名字。
<param>指定要公开给JavaScript访问的东西
<include>指定要公开给JavaScript的方法。不指定的话就是公开所有方法。
<exclude>与<include>标签相对,该标签指定被禁止访问的方法。
<convertor>负责这些方法的参数和返回类型。
<convertor>下还有两个重要的属性,分别是converter和match,其作用是时converter="bean"属性指定转换的方式采用JavaBean命名规范,match="com.dwr.TestBean"属性指定要转换的JavaBean的名称。
然后我们再看web.xml中的配置:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>strutsDemo01</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>strutsDemo01</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在此还需要解释一点就是,就像你们看到的,我用了两种方式去显示我的界面。第一种是使用了DWR的方式去设置页面的属性,value等,第二种方式则是用jQuery的方式,我比较推荐使用这一种,毕竟在页面展现方面jQuery更强大一些。但是不管你页面是怎么展示出来的,其中获取数据都是通过DWR来获取的,这是毋庸置疑的。此处的Hello对应的是你在dwr.xml配置文件中配置的名字,而sayHello则是我们java文件中的一个方法。
到此这个小程序就结束了,实现的功能也很简单,就是在一个文本框里输入一些数字,然后单击按钮,在当前页面显示出你输入的文字。对于大神来说的确有点简单了,但对于初学者来说还是可以作为入门基础来看的。
原文链接:https://www.f2er.com/ajax/163292.html