1。在使用DWR之前要去下载一个dwr.jar包(http://directwebremoting.org/dwr/download.html)加入到你的程序当中去。
2。在web.xml加班DWR配置如下:
<servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
3。完成我们的Ajax调用的方法如:
public class UserDAO {
EntityManagerFactory factory = null;
EntityManager manager = null;
public void persist(User user) {
factory = Persistence.createEntityManagerFactory("mengya");
manager = factory.createEntityManager();
manager.getTransaction().begin();
manager.persist(user);
manager.getTransaction().commit();
manager.close();
factory.close();
}
public boolean exitUserName(String name) {
boolean flag = false;
factory = Persistence.createEntityManagerFactory("mengya");
manager = factory.createEntityManager();
Query query = manager.createQuery("select u from User u where u.username=:username");
query.setParameter("username", name);
List<User> userList = query.getResultList();
if (userList.size() != 0) {
flag = true;
}
manager.close();
factory.close();
return flag;
}
}
专门写一个包里面存放我们Ajax调用的方法如下:
package com.mengya.AjaxDAO;
import com.mengya.dao.UserDAO;
public class UserAjaxDAO {
private UserDAO userDao=new UserDAO();
public boolean exitUserName(String name){
return userDao.exitUserName(name);
}
}
4。配置我们的DWR里的dwr.xml(注意该文件要与web.xml同一个目录下面)如下:
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <!-- allow部分定义了DWR能够创建和转换的类 --> <allow> <!-- 每一个在类中被调用的方法需要一个<create …>有若干类型的creator,使用“new”关键字或者Spring 框架等。 --> <!-- javascript 属性 在浏览器里给你创建的对象命名。避免使用JavaScript 保留字。这个名字将在页面里作为js被导入 --> <create javascript="UserAjaxDAO" creator="new"> <param name="class" value="com.mengya.AjaxDAO.UserAjaxDAO"> </param> </create> <convert match="com.mengya.bean.User" converter="bean"></convert> </allow> </dwr>
5。在页面上完成对Ajax的使用如下:
<html>
<head>
<!-- 前页两个js由dwr完成 -->
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<!-- 这个js文件由dwr自己完帮我们生成 -->
<script type="text/javascript" src="dwr/interface/UserAjaxDAO.js"></script>
<title>用户注册</title>
<script type="text/javascript">
function show(boolean){
if(boolean){
${"error"}.style.visibility="visible";
form1.username.value="";
}else{
${"error"}.style.visibility="hidden";
}
}
function validate(){
var name=form1.username.value;
//show表示该Ajax回调方法
UserAjaxDAO.exitUserName(name,show);
}
function init(){
${"error"}.style.visibility="hidden";
}
</script>
</head>
<body οnlοad="init()">
<form action="#" name="form1">
<table id="table1" border="0">
<tr>
<td>用户名:</td>
<td>
<input type="text" name="username" οnchange="validate()">
</td>
<td id="error">
<font color="red">用户名已存在!</font>
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="password">
</td>
</tr>
</table>
</form>
</body>
</html>