DWR帮助我们将本地的javascript脚本函数调用转变成对远程java对象函数的调用。在函数的调用过程中我们需要传递参数,这样我们就需要将本地的javascript变量转变成对应的java类型变量。这个就是Convertor的作用。DWR内部为我们 编写了一些JAVA主要类型的Convertor.默认下面的数据类型会自动转换:boolean, byte, short, int, long, float, double, char, java.lang.Boolean, java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Float, java.lang.Double, java.lang.Character, java.math.BigInteger, java.math.BigDecimal and java.lang.String.但是假如我们有这样一个方法A.setB(B b),现在我们要在javascript脚本中调用该方法,我们需要传递java类型为B的参数,这个时候我们就需要配B配置Convertor.下面我 们编写一个添加用户的简单程序:
1、写一个用户信息Bean:UserBean,包含简单的userName,userPassword信息。
2、写一个类,里面包含添加用户函数DwrService.addUser(UserBean user)代码如下:
package test;
import java.io.IOException;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import javax.servlet.ServletException;
public class DwrService {
public String check(String name){
//访问数据库验证信息
if(name.startsWith("aa")){
return "用户已经存在";
}
else{
return "可以使用该用户";
}
}
public String getInclude() throws ServletException, IOException
{
return WebContextFactory.get().forwardToString("/test.jsp");
}
public String addUser(UserBean user){
//将用户信息添加到数据库中
return "Name:"+user.getUserName()+";Password="+user.getUserPassword();
}
}
3、配置dwr.xml文件,注册类方法和Converte信息
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<convert converter="bean" match="test.UserBean"/>
<create creator="new" javascript="DwrService">
<param name="class" value="test.DwrService"/>
</create>
</allow>
</dwr>
4、编写页面文件,提供功能。index.html
<html>
<head>
<script type='text/javascript' src='/test/dwr/interface/DwrService.js'></script>
<script type='text/javascript' src='/test/dwr/engine.js'></script>
<script type='text/javascript' src='/test/dwr/util.js'></script>
<script LANGUAGE=javascript>
<!--
function addUser() {
var user={userName:null,userPassword:null};
dwr.util.getValues(user);
DwrService.addUser(user,function(data) {
dwr.util.setValue("userInfo",data);
});
}//-->
</script>
</head>
<body>
<hr>
name:<input type="text" id="userName"/>
<br>
password:<input type="text" id="userpassword"/>
<br>
<input value="submit" type="button" onclick="addUser()" />
<br>
<span id="userinfo"></span>
</body>
</html>
5、现在我们就可以通过Bean Converter将javascript变量user转变成java类型UserBean类型传给java方法了。
说明:dwr.util.getValues(Object);如同dwr.util.getValue("id")方法,用来将页面中的元素内容复制到变量中,与getValue不同getValues方法不返回值内容而是修改参数Object中的信息。Object中的内容是一些键值对,键对应到页面 元素的id属性,值对应元素的内容。我们可以通过将页面元素的id设置为Bean的属性,然后通过该方法轻松的获取用户的输入信息。
与读取属性相对的是设置页面元素的属性:setValue()和setValues()
分享到:
相关推荐
Castor是一个Java库,用于将XML数据映射到Java对象(即bean)和从Java对象反向映射回XML。...通过深入理解并实践“castor-1.3.1-examples.zip”中的样例,开发者可以更好地掌握和运用Castor的功能。
在"spring的bean加载顺序样例项目"中,我们可以通过分析和实验来深入理解这一主题。下面将详细阐述Spring Bean的加载顺序以及相关知识点。 1. **Bean的定义与作用域** - Spring中的Bean是在`beans.xml`或Java配置...
会话Bean开发样例 MDBTest.zip //05.消息驱动Bean开发样例 EntityBeanTest.zip //06.实体Bean开发样例 ORMTest.zip //07.实体对象映射ORM开发样例 JPQLTest.zip //08.实体查询语言JPQL开发样例 JAASTest....
会话Bean开发样例 MDBTest.zip //05.消息驱动Bean开发样例 EntityBeanTest.zip //06.实体Bean开发样例 ORMTest.zip //07.实体对象映射ORM开发样例 JPQLTest.zip //08.实体查询语言JPQL开发样例 JAASTest....
会话Bean开发样例 MDBTest.zip //05.消息驱动Bean开发样例 EntityBeanTest.zip //06.实体Bean开发样例 ORMTest.zip //07.实体对象映射ORM开发样例 JPQLTest.zip //08.实体查询语言JPQL开发样例 JAASTest....
会话Bean开发样例 MDBTest.zip //05.消息驱动Bean开发样例 EntityBeanTest.zip //06.实体Bean开发样例 ORMTest.zip //07.实体对象映射ORM开发样例 JPQLTest.zip //08.实体查询语言JPQL开发样例 JAASTest....
- **通过代码注解**:Spring也支持通过注解来获取Bean,如`@Autowired`和`@Resource`,它们能够自动将依赖注入到目标字段或方法中,无需手动从ApplicationContext获取。 3. **静态Singleton Bean Manager** 通常...
本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...
本篇文章将深入探讨如何在Spring应用中获取Bean,以及相关的源码分析和实用工具。 首先,Spring容器(ApplicationContext)是管理Bean的中心,它负责Bean的生命周期和依赖注入。获取Bean主要有以下几种方式: 1. *...
在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...
37 SpEL Bean方法属性引用原理主要探讨了如何在Spring容器中,一个Bean如何引用另一个Bean的属性,并通过表达式语言(Spring Expression Language,简称SpEL)来实现这一过程。 首先,让我们理解什么是SpEL。SpEL是...
在配置类上使用`@Configuration`注解,然后使用`@Bean`注解来定义方法,该方法返回的对象会被Spring容器注册为一个Bean。 ```java @Configuration public class AppConfig { @Bean public Teacher teacher() {...
通常,这类库提供了一个简单的方法,如`map()`,接受源Bean和目标Bean类型作为参数,自动处理属性映射。例如: ```java MySource source = ...; MyDestination dest = BeanMapper.map(source, MyDestination.class)...
- 例如,一个简单的示例可能是创建一个XML文档,通过调用`Document`类的`createInstance()`方法,然后使用XMLBean生成的Java类来设置XML元素和属性。 4. XMLBean的主要功能: - XML到Java对象的映射:XMLBean能...
3. 初始化:Bean实例完成属性注入后,会调用初始化方法,可以是`@PostConstruct`注解的方法或者通过`init-method`属性指定的方法。 4. 使用:容器将Bean暴露给其他Bean使用。 5. 销毁:当容器关闭时,或者Bean不再...
在Spring框架中,Bean的创建方式多样,其中两种常见的非XML配置方式是通过静态工厂方法和实例工厂方法来创建Bean。这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态...
2. 每次请求Prototype Bean时,容器都会调用Bean的工厂方法或者构造函数来创建新的实例。 3. 如果Prototype Bean有依赖项,容器会递归地创建这些依赖的实例,直到所有依赖项都被满足。 在实际开发中,我们可以通过...
这种方法是最简单的方法。我们可以使用 ApplicationContext 对象来获取 Bean 对象。首先,我们需要获取 ApplicationContext 对象,然后使用其 getBean() 方法来获取指定名称的 Bean 对象。 ```java ...
### 一种面向对象的Java Bean查询方法的实现 #### 概述 在Java开发中,尤其是在涉及数据库操作的应用场景下,传统的做法是直接在Java Bean中编写SQL语句来完成数据的增删改查等操作。然而,这种方法存在一些明显的...