dwr应用

前端之家收集整理的这篇文章主要介绍了dwr应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

引言:DWR是一个框架,简单的说就是能够在javascript 直接调用java方法,而不必去写一大堆javascript代码

他是基于Ajax实现的,可以实现无刷新效果

1.dwr 配置之web.xml

<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<!-- 这个参数默认的是false,如果是true我们可以通过http://localhost:8080/shxx/dwr/interface/XjzxbjFacade.js 
			看到你部署的每个dwr class,并且可以测试java代码的每个方法是否运行正常,正式环境下一定要把这个参数设置为false
		 -->
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>classes</param-name>
			<param-value>java.lang.Object</param-value>
		</init-param>
		<init-param>
			<param-name>crossDomainSessionSecurity</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>activeReverseAjaxEnabled</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>maxWaitAfterWrite</param-name>
			<param-value>-1</param-value>
		</init-param>
		<init-param>
			<param-name>disconnectedTime</param-name>
			<param-value>60000</param-value>
		</init-param>
		<init-param>
			<param-name>config-1</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_core.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-2</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_xt.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-3</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_wf.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-4</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_zb.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-5</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_xm.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-6</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_cw.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-7</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_dzjj.xml</param-value>
		</init-param>
		<init-param>
			<param-name>config-8</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_xj.xml</param-value>
		</init-param>
	  <init-param>
			<param-name>config-9</param-name>
			<param-value>/WEB-INF/classes/dwr/dwr_jc.xml</param-value>
		</init-param>
		<load-on-startup>100</load-on-startup>
	</servlet>
<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>

注意:1.一个servlet,对应多个dwr.xml配置文件 ,这种情况下 param-name的值必须以config开头,param-name的个数可以>=0个,如果等于0

呢么将会读取WEB_INF/dwr.xml,如果大于0个,则这个文件不会被读取。

2.dwr.xml的配置。

<dwr>
	<allow>
		<convert match="java.lang.StringBuffer" converter="bean"/>
		<!-- 收费标准页面 根据当前项目的 流程环节 判断显示那些收费项目  by黄敏 2013-06-09-->
		<create javascript="SfbzFacadeImpl" creator="spring">
			<param name="beanName" value="cw.sfbzFacade"/>
			<include method="getXM_HJMC"/>
			<include method="getSfsfbyallfb"/>
		</create>
	</allow>
</dwr>
注意:<convert> 负责这些方法的参数和返回值。coverter 指定是按照javabaean的方式方式匹配。

<allow>中包括可以暴露给javascript访问的东西。

<create> 标签中指定javascript中可以访问的java类,并定义dwr如何获得要进行的远程类的实例 。

creator =“new” 指定java类实习的生成方式,new 意味着dwr应当调用类的默认构造函数来获得实例,

其他还有spring,通过IOC容器获得实例。javascript代码指定访问对象时使用的名称

<param> 标签 指定要公开给javascript的java类名。

<include> 标签指定要公开给javascript的方法。不指定的话就公开所有方法

<exclude> 标签指定要防止被访问的方法

3.javascript 中的调用

<script jwcid="@Any" type="text/javascript" src="ognl:request.contextPath + '/dwr/engine.js'"></script>
<script jwcid="@Any" type="text/javascript" src="ognl:request.contextPath+'/dwr/interface/XjzxbjFacade.js'" />
也可以加上util.js.,XjzxbjFacade.js 是dwr根据配置文件自动生成的。
js中的具体应用。
XjzxbjFacade.saveForXJ_TBSJ(tbsjid,sjz,xjxid,zbjlid,document.getElementById("xmxh").value,document.getElementById("bxh").value,document.getElementById("bmgysxh").value,function(map){
		//回写小计
			if(map.XIAOJI!=null){
			    document.getElementById('xj'+map.XIAOJITBSJID).value= map.XIAOJI;
				document.getElementById(map.XIAOJITBSJID).value= map.XIAOJI;
				document.getElementById('zj'+map.ZONGJITBSJID).value= map.ZONGJI;
			    document.getElementById(map.ZONGJITBSJID).value= map.ZONGJI;
			}
		});
前面的是要传入的参数,后面的function(map)是接受这个方法返回的值。

猜你在找的Ajax相关文章