需求很简单,就是用js向后端请求,然后把请求的结果弄进一个select里面。一开始是用xmlrequest去请求后端一个groovy的url,得到一个xml,然后把xml的内容填进select里面去。做完老瞅着不顺眼,正好在看ajax的资料,拿dwr改造一下。
js是我一直很头疼的事了,尤其是对dom的操作上面,dwr感觉就是在直接调java接口,操作java对象,省事省心啊。
用dwr,先得在web.xml中配一下。
1 <servlet>
2 <servlet-name>dwr-invoker</servlet-name>
3 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
4 <init-param>
5 <param-name>debug</param-name>
6 <param-value>true</param-value>
7 </init-param>
8 </servlet>
9 <servlet-mapping>
10 <servlet-name>dwr-invoker</servlet-name>
11 <url-pattern>/dwr/*</url-pattern>
12 </servlet-mapping>
13
然后就是配dwr.xml文件了。
dwr和spring贴得比较紧,不用折腾,直接让dwr去调spring中定义的bean了。
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
3<dwr>
4 <allow>
5 <create javascript="ServerManager" creator="spring">
6 <param name="beanName">ServerManager</param>
7 </create>
8 </allow>
9</dwr>
10
我的project中,已经在web.xml中配了spring的listener,直接写beanName就行。
在ServerManager接口中定义了如下方法
List<Server> loadAll(User manager, ServerStatus status, String order);
因此,在dwr中定义了三个convert(一开始没配,结果怎么调都不成功)。
1 <convert converter="bean" match="com.yninfo.sa.domain.Server" />
2 <convert converter="bean" match="com.yninfo.sa.domain.ServerStatus" />
3 <convert converter="bean" match="com.yninfo.sa.domain.User" />
loadAll方法中的manager参数,是用户登录成功后,session.setAttribute("user",user)存放的。在html里面,用js是无法读到的,因此,自己定义了一个java bean。
1public class Remote {
2 public User getUser(HttpSession session) {
3 return (User) session.getAttribute("user");
4 }
5}
6
同样的,在dwr中配了一下
1 <create javascript="Remote" creator="new">
2 <param name="class" value="com.yninfo.sa.web.ajax.Remote" />
3 </create>
所有配置完成后,js代码如下:
1<script type='text/javascript' src='dwr/interface/Remote.js'></script>
2<script type='text/javascript' src='dwr/interface/ServerManager.js'></script>
3<script type='text/javascript' src='dwr/engine.js'></script>
4<script type='text/javascript' src='dwr/util.js'></script>
5<script>
6 function init(){
7 Remote.getUser(
8 function(user){
9 ServerManager.loadAll(user,null,null,load);
10 });
11 }
12 function load(data){
13 for (var i=0; i<data.length; i++) {
14 document.DailyRecordAdd.elements["model.serverId"].options[i]=
15 new Option(data[i].name,data[i].id);
16 }
17 }
18 window.onload = function (){
19 init();
20 }
21</script>
最终的配置文件:
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
3<dwr>
4 <allow>
5 <create javascript="ServerManager" creator="spring">
6 <param name="beanName">ServerManager</param>
7 <include method="add" />
8 <include method="findByPrimaryKey" />
9 <include method="loadAll" />
10 </create>
11 <create javascript="Remote" creator="new">
12 <param name="class" value="com.yninfo.sa.web.ajax.Remote" />
13 </create>
14 <convert converter="bean" match="com.yninfo.sa.domain.User" />
15 <convert converter="bean" match="com.yninfo.sa.domain.Server" />
16 <convert converter="bean" match="com.yninfo.sa.domain.ServerStatus" />
17 </allow>
18</dwr>
19
分享到:
相关推荐
本教程将帮助初次接触DWR的开发者快速上手。 ### 1. 安装DWR的Jar包 首先,你需要下载DWR的核心库文件`dwr.jar`。将其放置于你的Web应用的`WEB-INF/lib`目录下,确保与其它依赖的jar文件放在一起。这样,DWR的核心...
对于刚接触DWR的新手来说,本手册将详细介绍如何配置与使用DWR。 #### 二、DWR配置与部署 **1. 添加DWR库** - 将DWR的`.jar`文件放置于Web应用的`WEB-INF/lib`目录中。 - **示例**:如果项目名为`TestDWR1`,则应将...
**DWR入门**:初学者在接触DWR之前,应具备一定的JSP、JavaScript和应用服务器(如Tomcat)的基础知识。本书《DWR中文文档v0.9DWR2.0》由方佳玮编著,旨在为新手提供从入门到实践的完整指南。书中不仅包含了DWR的...
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在浏览器端与服务器端...无论你是初次接触DWR还是希望深入研究,这份资源都会是你的宝贵资料。在学习过程中,记得理论联系实践,多做实验,以巩固你的理解。
这是一份宝贵的资源,特别是对于那些刚刚接触DWR的人来说,能快速上手并开始实际开发。 5. **DWR的工作原理**:DWR通过创建一个动态JavaScript代理,使得浏览器可以直接调用服务器上的Java方法。这种机制使得开发者...
在这个小练习中,你可能还会接触到jQuery,这是一个广泛使用的JavaScript库,它可以简化DOM操作、事件处理和AJAX交互。DWR和jQuery的结合,可以让开发者更方便地构建功能丰富的、响应式的Web应用。 要运行这个小...
**DWR(Direct Web Remoting)初次接触** DWR,全称为Direct Web Remoting,是一种JavaScript库,允许在Web浏览器和服务器之间进行实时、安全的双向通信。它简化了Ajax应用的开发,使得开发者可以像操作本地对象...
首先,"dwr工程实例"表明我们将接触到一个实际的项目,这个项目已经包含了使用DWR技术的代码和配置。MyEclipse是基于Eclipse的Java EE集成开发环境,非常适合于开发和调试Web应用程序,包括DWR项目。 在导入这个...
DWR (Direct Web Remoting) 是一个开源JavaScript库,它允许Web应用程序在客户端与服务器端之间进行实时通信,实现无刷新的数据交换。...同时,通过接触MySQL和SQL查询,你也将加深对数据库操作的理解。
但通过以上描述,你可以预见到在学习这个主题时,你将接触到的是一系列关于DWR和Spring整合的实践操作和理论知识。对于想要构建富客户端Web应用的开发者来说,这是一项非常实用的技术。如果你对这个领域感兴趣,建议...
例如,你可能接触到了`$`函数用于选取元素,`$$`用于选取多个元素,`Element.Methods`扩展DOM元素的方法,以及`Ajax.Request`和`Ajax.Updater`进行异步请求的使用。 第17章则可能涉及jQuery的介绍和DWR(Direct Web...
在"Epai"项目中,学员们不仅会接触到Spring框架的配置和使用,还需要掌握如何在DWR的帮助下实现动态网页交互。这可能包括创建Java后端服务、编写DWR配置文件、以及在前端JavaScript中调用这些服务。通过这样的实践,...
《SSH EXT 图书管理系统:深度解析与二次开发指南》 SSH EXT 图书管理系统是一个基于Java技术栈构建...对于开发者而言,无论是初次接触还是进行二次开发,都能从中受益匪浅,享受到Java技术栈带来的强大功能和灵活性。
在这个项目中,我们可能会接触到各种与IT相关的技术,如编程语言、数据库管理、前端界面设计以及服务器端处理等。通过对这个项目的深入学习,学生能够提升自己的综合技术能力,并在实际工作中应用。 标签"源码"表明...
首先,实习生接触到了一系列Java相关的框架和技术,包括Hibernate、Spring、iBATIS、jQuery、EXTJS、DWR和EasyUI等。这些技术分别在数据库操作、依赖注入、前端交互、UI设计和远程调用等方面发挥重要作用。Hibernate...
作者通过实践和学习,掌握了 Java 相关技术,如 Hibernate、Spring、iBATIS、jQuery、EXTJS、DWR、EasyUI 等,并了解了公司的运作和工作流程。 实习第一周――学习和了解公司运作 在实习的第一周,作者主要学习和...
在这周中,作者向开发人员问了关于项目小组需要使用的技术,如 Hibernate、Spring、iBATIS、jQuery、EXTJS、DWR、EasyUI 等等,并重点学习了 jQuery。之后,作者熟悉了招聘流程,并帮助项目经理做了个项目上线休整的...
在实习的后期,实习生接触了异步技术,这是一种提高用户体验的关键技术。他们将异步应用到了新建项目的页面,实现了局部刷新,以及根据用户id显示头像的功能。在项目分组和技术分配的过程中,实习生们通过抽签的方式...