- 浏览: 168120 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
gwill_21:
dwr.xml找不到怎么办,难道要自己手写dwr.xml?痛苦 ...
DWR框架 —— 用户注册验证 -
recoba7:
MLDN魔乐科技 Oracle学习笔记 (5) -
lanni2460:
呵呵 尽管现在才看到这个 但是我真的觉得 李老师 讲的很好呢 ...
严重声明,那些恶意诋毁MLDN及李兴华老师的其他培训机构统统走开 -
chian_xxp:
只要把功能实现了,代码结构合理了,代码性能提高了,该注意的注意 ...
业务、业务、业务。。。 -
wzpbb:
密码多少啊??? 给一下啊
MLDN 魔乐科技 Oracle 学习笔记(2)
DWR是Java调用AJAX的框架,通过将Java的对象中的方法映射成为js中对应的对象和方法,从而使调用js的方法同时会调用Java中的对应方法,并将返回的结果处理成为js对象或数组,返回给回调函数来处理。
DWR可以很容易的与Spring框架结合,但DWR对于hibernate的关系映射不支持。
1、建立项目
2、加入SSH支持
(1)加入Spring支持
(2)加入Hibernate支持
(3)修改Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/info_users"> </property> <property name="username" value="root"></property> <property name="password" value="mysqladmin"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql"> true </prop> </props> </property> </bean></beans> |
(4)加入Struts支持
(5)在struts-config.xml中加入Spring的插件配置
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller> <message-resources parameter="mldn.lin.struts.ApplicationResources" /> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" /> </plug-in> |
(6)加入日志文件
加到src下
3、处理jar包
(1)删除冲突jar包
删除asm-2.2.3.jar、ehcache-1.1.jar
(2)加入数据库公共连接池支持jar包
加入commons-pool.jar支持jar包
4、加入DWR支持
将dwr.jar拷贝到项目的lib下,将dwr.xml拷贝到项目的WEB-INF下
5、加入dwr的Servlet配置
在web.xml中加入dwr的Servlet配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr
public class Users implements java.io.Serializable {
// Fields
private String userid;
private String realName;
private String password;
private String photo;
// Constructors
public Users() { }
public Users(String userid, String realName, String password, String photo) { this.userid = userid; this.realName = realName; this.password = password; this.photo = photo; }
// Property accessors
public String getUserid() { return this.userid; }
public void setUserid(String userid) { this.userid = userid; }
public String getRealName() { return this.realName; }
public void setRealName(String realName) { this.realName = realName; }
public String getPassword() { return this.password; }
public void setPassword(String password) { this.password = password; }
public String getPhoto() { return this.photo; }
public void setPhoto(String photo) { this.photo = photo; }
} |
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="mldn.lin.pojo.Users" table="users" catalog="info_users"> <id name="userid" type="java.lang.String"> <column name="userid" length="20" /> <generator class="assigned" /> </id> <property name="realName" type="java.lang.String"> <column name="real_name" length="20" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="10" not-null="true" /> </property> <property name="photo" type="java.lang.String"> <column name="photo" length="50" not-null="true" /> </property> </class> </hibernate-mapping>
|
7、编写DAO及其实现类
package mldn.lin.dao;
public interface UsersDAO { public boolean checkUserid(String userid) throws Exception; } |
package mldn.lin.dao.impl;
import mldn.lin.dao.UsersDAO; import mldn.lin.pojo.Users;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDAOImpl extends HibernateDaoSupport implements UsersDAO {
public boolean checkUserid(String userid) throws Exception { // TODO Auto-generated method stub Users users = (Users) this.getHibernateTemplate().get(Users.class, userid); return users != null ; } }
|
8、配置实现类到Spring中
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/info_users"> </property> <property name="username" value="root"></property> <property name="password" value="mysqladmin"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql"> true </prop> </props> </property> <property name="mappingResources"> <list> <value>mldn/lin/pojo/Areaplus.hbm.xml</value> <value>mldn/lin/pojo/Area.hbm.xml</value> <value>mldn/lin/pojo/Users.hbm.xml</value></list> </property></bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property> </bean> <bean id="usersdaoimpl" class="mldn.lin.dao.impl.UsersDAOImpl"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate"></ref> </property> </bean> </beans> |
9、建立ActionForm和Action
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config> <data-sources /> <form-beans > <form-bean name="registForm" type="mldn.lin.struts.form.RegistForm" />
</form-beans>
<global-exceptions /> <global-forwards /> <action-mappings > <action attribute="registForm" input="/regist.jsp" name="registForm" parameter="status" path="/regist" scope="request" type="mldn.lin.struts.action.RegistAction" />
</action-mappings>
<message-resources parameter="mldn.lin.struts.ApplicationResources" /> </struts-config>
|
package mldn.lin.struts.form;
import javax.servlet.http.HttpServletRequest; import mldn.lin.pojo.Users; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping;
public class RegistForm extends ActionForm {
private Users users=new Users();
private String photo;
private String status;
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { // TODO Auto-generated method stub return null; }
public void reset(ActionMapping mapping, HttpServletRequest request) { // TODO Auto-generated method stub }
public Users getUsers() { return users; }
public void setUsers(Users users) { this.users = users; }
public String getPhoto() { return photo; }
public void setPhoto(String photo) { this.photo = photo; }
public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; } } |
package mldn.lin.struts.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import mldn.lin.dao.UsersDAO; import mldn.lin.struts.form.RegistForm;
import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction;
public class RegistAction extends DispatchAction { private UsersDAO usersdao;
public void setUsersdao(UsersDAO usersdao) { this.usersdao = usersdao; }
public ActionForward regist(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { RegistForm registForm = (RegistForm) form;// TODO Auto-generated method stub return null; } } |
10、编写前台页面
<%@ page language="java" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>首页</title> </head>
<body> <center> <a href="regist.jsp">注册</a> </center> </body> </html> |
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:html lang="true"> <head> <html:base />
<title>regist.jsp</title>
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->
</head>
<body> <center> <html:form action=" regist.do " method="post" focus="users.userid"> <table border="0"> <tr> <td>用户ID:</td> <td><html:text property="users.userid" /></td> </tr> <tr> <td>真实姓名:</td> <td><html:text property="users.realName" /></td> </tr> <tr> <td>密码:</td> <td><html:password property="users.password" /></td> </tr> <tr> <td>头像:</td> <td><html:file property="photo" /></td> </tr> <tr> <td colspan="2" align="center"><html:submit value="注册"/></td> </tr> </table> </html:form> </center> </body> </html:html>
|
11、配置Action
在Spring管理中
<bean name="/regist" class="mldn.lin.struts.action.RegistAction"> <property name="usersdao"> <ref bean="usersdaoimpl"></ref> </property> </bean> |
12、将UsersDAOImpl.java映射为JS的文件和对象
修改dwr.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <allow> <!-- 每一个<create>表示一个Java对象映射成为的一个js javascrpit:表示映射后的js的文件名和对象名 creator:表示Java对象的创建方式 |- new:表示直接使用new对象的方式创建 |- spring:表示对象使用spring方式创建 scope:表示映射的js所保存的属性范围 --> <create javascript="usersdao" creator="spring" scope="session"> <!-- <param>用来配置所映射的Java对象 name:表示配置的java对象的方式,与creator配合使用 |- class;如果为new的方式创建,则必须将 包.类名称 传入 |- beanName:如果为spring方式创建,则需要将对应的bean的id传入 value:依据选择的name进行填写 --> <param name="beanName" value="usersdaoimpl"></param> </create>
<!--<convert match="" converter="bean"></convert> --> </allow> </dwr> |
13、将js文件导入到页面
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:html lang="true"> <head> <html:base />
<title>regist.jsp</title>
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="${pageContext.request.contextPath }/dwr/engine.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath }/dwr/util.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath }/dwr/interface/usersdao.js"></script> </head>
<body> <center> <html:form action="" method="post" focus="users.userid"> <table border="0"> <tr> <td>用户ID:</td> <td><html:text property="users.userid" /></td> </tr> <tr> <td>真实姓名:</td> <td><html:text property="users.realName" /></td> </tr> <tr> <td>密码:</td> <td><html:password property="users.password" /></td> </tr> <tr> <td>头像:</td> <td><html:file property="photo" /></td> </tr> <tr> <td colspan="2" align="center"><html:submit value="注册"/></td> </tr> </table> </html:form> </center> </body> </html:html>
|
其中engine.js和util.js是dwr.jar中提供的支持js,依据Servlet配置映射到/dwr/下,而userdao.js是配置好的映射js,同样会在/dwr/,只不过所有的这种映射js在dwr中规定必须在interface虚拟目录下。
14、编写js方法调用usersdao对象的验证方法
<script type="text/javascript"> function checkUserid(userid){ usersdao.checkUserid(userid,checkUseridCallback); } </script> |
<tr> <td>用户ID:</td> <td><html:text property="users.userid" onblur="checkUserid(this.value);" /></td> </tr> |
js方法中usersdao调用的checkUserid 方法为UsersDAO中的方法,必须与那个同名;
而标记为checkUserid的方法则只是页面上的方法,随意取名即可;
15、编写回调方法
<script type="text/javascript"> function checkUserid(userid){ usersdao.checkUserid(userid,checkUseridCallback); } function checkUseridCallback(returnValue){ if(returnValue){ document.getElementById("checkMessage").innerHTML="<font color='red' size='-1'>用户名已存在</font>"; }else{ document.getElementById("checkMessage").innerHTML="<font color='blue' size='-1'>用户名可用</font>"; } } </script> |
<tr> <td>用户ID:</td> <td><html:text property="users.userid" onblur="checkUserid(this.value);" /><span id="checkMessage"></span></td> </tr> |
16、启动服务测试
异常:
13:48:58,671 ERROR SpringCreator:75 - DWR can't find a spring config. See following info logs for solutions 13:48:58,687 ERROR SpringCreator:83 - Error java.lang.InstantiationException: DWR can't find a spring config. See the logs for solutions |
启动服务后出现错误,要求配置Spring监听,该监听用来给dwr提供spring配置文件的路径
17、配置监听
在web.xml中配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applicationContext.xml </param-value> </context-param>
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
|
18、测试
OK
发表评论
-
继续努力的工作
2009-06-23 22:09 958计划内任务 任务编号 任 ... -
今天来了一拨新的学生
2009-06-22 22:09 962今天MLDN开新班了,一帮新的朋友过来学习了,看见了好多 ... -
项目开发,不断的项目开发...贸易通,果然够贸易
2009-06-21 09:50 978项目开发啦,做项目,每天还要被老师拽到前面去讲去做,这 ... -
SSH2的开发
2009-06-17 19:58 1026今天继续记录项目的开发进度,每天都在努力的进步中,离找工作 ... -
新的项目 —— 贸易通
2009-06-16 19:34 797SSH2做个开发有啥难的,看本小姐自己的功力好了,轻松,容易啊 ... -
Struts 2.0 其他特性
2009-06-15 21:30 1040Struts 2.0算是学完了,自己也总结了很多的内容,包括和 ... -
Struts 2.0新技术哦
2009-06-14 22:52 1385一、Struts2.0的概述 Strut ... -
MLDN培训感想
2009-06-09 21:42 1155今天不太想写一些技 ... -
今天感慨良多
2009-06-07 21:05 874今天,好象很难得的可以自己给自己放松一天,来MLDN学 ... -
AJAX学习笔记
2009-06-04 21:14 3057AJAX这门技术我想都应该听说过了吧,别的我不说了,支持本小姐 ... -
有了技术我不怕不怕啦
2009-06-04 19:56 885技术学会了,项目就会做了,业务搞明白了,项目就更容易了,只 ... -
MLDn学习笔记 —— JDBC
2009-05-13 20:36 1406JDBC是JAVA基础的最后一个部分,也是我认为最简单的一个部 ... -
MLDN学习笔记 —— Annotation
2009-05-12 20:25 1099Annotation作为JDK 1.5最重要的新特性,结合了枚 ... -
java新特性 —— 枚举
2009-05-11 21:11 1189枚举是JDK 1。5之后提供的新特性,希望此份笔记对大家有用啊 ... -
MLDn学习笔记 —— JDK新特性(枚举)
2009-05-09 22:06 1147枚举是JDK 1.5之后提供的新功能,而且在JDK 1.5之后 ... -
java学习笔记 - 反射机制,头大的难
2009-05-07 21:12 1108反射机制虽然在开发中使用较少,但是作为JAVA最重要的特性,必 ... -
最核心的部分 —— 类集
2009-05-06 20:38 980类集是JAVA中对数据结构的很好实现,本身也是最重要的,老师说 ... -
mldn学习笔记 — 网络编程
2009-05-05 19:29 1245这份笔记讲解了tcp和udp的程序设计,虽然网络编程不怎么使用 ... -
Java IO操作(下)的笔记 给大家分享
2009-05-04 19:23 819给大家分享学习笔记,支持的给我留言吧! -
mldn学习笔记 —— IO(上)
2009-05-03 16:04 1231IO是整个java中的难点,个人如果自学的话,则肯定有很大的难 ...
相关推荐
dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架
DWR框架的实现DWR框架的实现DWR框架的实现DWR框架的实现DWR框架的实现
Ajax的简述 传统web开发模式与ajax开发模式的不同 Ajax的开发与案例 Dwr框架的简介 Dwr框架的应用与案例 Dwr 框架与Struts,Spring框架的结合
SSH与DWR框架整合SSH与DWR框架整合SSH与DWR框架整合
DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样
dwr非常有名的ajax框架,内部有一个试例war包和必须的jar包
eWebEditor网页编辑器,dwr框架进行验证和javascript验证的源码!
dwr框架的源文件dwr框架的源文件dwr框架的源文件dwr框架的源文件
框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr
基于dwr框架的web应用的设计与使用,是介绍dwr入门的不错的文章。
DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册
(参考:http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html) DWR框架简单Demo,主要是用户注册的例子。 感谢原博主的分享!(附上我测试成功的Demo)
是自己学习期间DWR框架的简单的一些实例和操作。里面有三层写的异步刷新分页 还有DWR操作的14个小实例,以及提高能力的DWR的API和API的技术文档,贡献大家,希望大家能够用的上,也欢迎学习交流,里面有本人的QQ。
eWebEditor,dwr框架进行验证和javascript验证改后的
包含Ajax高级程序设计和DWR框架的资料
dwr框架需要使用的四个包,包括dwr.jar,jdom.jar,serializer.jar,xalan.jar
里面存放关于dwr框架的库和帮助文档,还有dwr官方的源码,以及关于控件的资料,对dwr配置文件有详细的说明
内容丰富 dwr框架详细介绍 讲解浅显易懂 和大家分享一下
java+dwr框架实现聊天室,