`
gaozengguang
  • 浏览: 63363 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

dwr学习笔记(和Hibernate、Spring等框架整合)二

阅读更多

在WEB-INFO下新建dwr.xml文件。配置我们要通过dwr使用的Java类。

<?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 creator="spring" javascript="demoDwr" scope="application">
			<param name="beanName" value="mydemoDwr"/>
			<include method="saveClass"/>
			<include method="updateClass"/>
			<include method="saveStudent"/>
			<include method="findAllClass"/>
			<include method="findStudentByClassId"/>
		</create>
		<convert converter="bean" match="com.inspur.mydemo.domain.Student">
			<param name="include" value="id,name,sex,age,birthday,cla"/>
		</convert>
		<convert converter="bean" match="com.inspur.mydemo.domain.Class">
			<param name="include" value="id,name"/>
		</convert>
	</allow>
</dwr>

 

在WEB-INFO下的web.xml力配置dwr和Sping、Hibernate。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<filter>
		<filter-name>hibernateFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>hibernateFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	
	<!-- 字符过滤器 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>
			org.springframework.web.filter.CharacterEncodingFilter
		</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.htm</url-pattern>
	</filter-mapping>
	
	<!-- dwr -->
	<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>
			org.directwebremoting.servlet.DwrServlet
		</servlet-class>
		<init-param>
			<param-name>classes</param-name>
			<param-value>java.lang.Object</param-value>
		</init-param>
		<init-param>
			<param-name>config</param-name>
			<param-value>WEB-INF/dwr.xml</param-value>
		</init-param>
		<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>
	
	<!-- 初始化spring context -->
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/demo-service.xml
		</param-value>
	</context-param>
	<context-param>
		<param-name>extremecomponentsPreferencesLocation</param-name>
		<param-value>/extremetable.properties</param-value>
	</context-param>
	
	
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

在WebRoot里新建一个文件夹jsp和js

在jsp里新建student.jsp和js里新建student.js。

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>学生和班级信息</title>
		<script type='text/javascript'
			src='${ctx }/dwr/interface/demoDwr.js'></script>
		<script type='text/javascript' src='${ctx }/dwr/engine.js'></script>
		<script type='text/javascript' src='${ctx }/dwr/util.js'></script>
		<script type='text/javascript' src='${ctx }/js/student.js'></script>
	</head>
	<body onload="init()">
		<table border="0" >
			<tr height="250">
				<td>
					<table border="0" >
						<tr><td>班级列表</td></tr>
						<tr>
							<td id="classContentDiv">
								<select name="classContent" id="classId" size="10" onchange="loadStudentByClass()" ondblclick="updateInit()">
									<option value="-1">请选择	</option>
								</select>
							</td>
						</tr>
					</table>
				</td>
				<td>
					<table border="0" >
						<tr><td>学生列表</td></tr>
						<tr>
							<td id="studentContentDiv">
							</td>
						</tr>
					</table>
				</td>
			</tr>
		</table>
		<!---body--->
		<div>
			<span>
				<input type="button" value="添加新班级" onclick="javascript:newClass();" style="cursor:hand;"/>
			</span>
		</div>
		
		<div id="classForm" style="display:none;">
			<div align="center">			
				<span>输入班级名称</span>
				<span><input type="text" name="newClassName" id="newClassName" /></span>
				<span><input type="button" value="保存" onclick="saveClass()" style="cursor:hand;"/></span>
			</div>
		</div>
		<div align="center">
			<div id="updateClassForm" style="display:none;">
				<span><input type="hidden" name="oldClassId" id="oldClassId" /></span>
				<span>班级名称</span>
				<span>
					<input type="text" name="oldClassName" id="oldClassName" />
					<input type="button" value="修改" onclick="updateClass()"/>
				</span>
			</div>
		</div>
		<div id="studentForm">
			<div>
				<span>姓名:</span>
				<input type="text" name="newStudentName" id="newStudentName" />
			</div>
			<div>
				<span>年龄:</span>
				<input type="text" name="newStudentAge" id="newStudentAge" />
			</div>
			<div>
				<span>性别:</span>
				<select name="newStudentSex" id="newStudentSex">
					<option value="-1">请选择性别</option>
					<option value="男">男</option>
					<option value="女">女</option>
				</select>
			</div>
			<div>
				<span>生日:</span>
				<input type="text" name="newStudentBirthday" id="newStudentSex" />
			</div>
			<div>
				<input type="button" value="保存" onclick="saveStudent()" />
			</div>
		</div>
		<br clear="all" />
		<!---主体结束--->
	</body>
</html>

 

function init() {
	loadClass();
}
function loadClass() {
	$("classForm").style.display = "none";
	$("updateClassForm").style.display = "none";
	demoDwr.findAllClass(loadClassCallBack);
}
function loadClassCallBack(data) {
	var str = "";
	if (DWRUtil._isArray(data)) {
		DWRUtil.removeAllOptions("classId");
		DWRUtil.addOptions("classId", data, "id", "name");
	} else {
		str = "没有这个班级";
	}
	loadStudentByClass();
}
function loadStudentByClass() {
	var ClassId = $("classId").value;
	//alert(ClassId);
	if (ClassId == null || ClassId == -1 || ClassId == "") {
		$("classId").options[0].selected = true;
		ClassId = $("classId").options[0].value;
	}
	//alert(classId);
	demoDwr.findStudentByClassId(ClassId, loadStudentByClassCallBack);
}
function loadStudentByClassCallBack(data) {
	var str = "";
	if (DWRUtil._isArray(data)) {
		for (var i = 0; i < data.length; i++) {
			var student = data[i];
			var sex = student.sex;
			
			str += "<ul>" + "<li>姓名-->" + student.name + "</li><li>年龄-->" 
				+ student.age + "</li><li>性别-->"+sex+"</li><li>生日-->"
				+student.birthday+"</li></ul>";
		}
	} else {
		str = "该班级里没有学生";
	}
	var studentList = document.getElementById("studentContentDiv"); 
	studentList.innerHTML = str;
}
function newClass() {
	$("classForm").style.display = "";
}
function saveClass() {
	var name = $("newClassName").value;
	if (name == "" || name == null) {
		alert("班级名称不能为空");
		return;
	}
	demoDwr.saveClass(name, saveClassCallBack);
}
function saveClassCallBack(data) {
	if (data == 0) {
		alert("\u6dfb\u52a0\u6210\u529f\uff01");
		$("classForm").style.display = "none";
		$("newClassName").value = "";
		loadClass();
		return;
	} else {
		alert("保存成功!");
	}
}
function updateInit()
{
	$("updateClassForm").style.display = "";
	var classId = $("classId").value;
	$("oldClassName").value = DWRUtil.getText('classContent') ;
} 
function updateClass()
{
	var classId = $("classId").value;
	var name    = $("oldClassName").value;
	//alert(classId);
	//alert(name);
	if(!classId.isValidInteger())	{
		alert("该班级不能被修改!因为找不到这样的班级。");
		return;
	}
	if(name==""){
		alert("班级名称不能为空!");
		return;
	}
	demoDwr.updateClass(classId,name,updateClassCallBack);
}
function updateClassCallBack(data){
	if (data == 0) {
		alert("更新成功!");
		$("updateClassForm").style.display = "none";
		$("oldClassName").value = "";
		loadClass();
		return;
	} else {
		alert("更新出错!");
	}
}
function saveStudent() {
	var classId = $("classId").value;
	var name = $("newStudentName").value;
	var age = $("newStudentAge").value;
	//alert(age);
	var sex = $("newStudentSex").value;
	var birthday = $("newStudentBirthday").value;
	if (name == "") {
		alert("姓名不能为空!");
		return;
	}
	if (!age.isValidInteger()) {
		alert("输入的年龄不是数字!");
		return;
	}
	if (birthday == ""){
		alert("生日不能为空");
		return;
	}
	var stu ={
		name:null,
		age:null,
		sex:null,
		birthday:null
	}
	stu.name=name;
	stu.age=age;
	stu.sex=sex;
	stu.birthday = birthday;
	demoDwr.saveStudent(stu,classId,saveStudentCallback);
	//demoDwr.saveStudent(name, age, sex ,birthday,classId, saveStudentCallback);
}
String.prototype.isValidInteger=function()
{
	var result=this.match(/^(-|\+)?\d+$/);
	if(result==null) return false;
	return true;
}
function saveStudentCallback(data) {
	if(data=="0"){
		alert("保存学生成功!");
	}else if(data=="1"){
		alert("保存学生出错,不含学生信息!");
	}else if(data=="2"){
		alert("没有当前这个班级、可能已经删除!");
	}else if(data=="-1"){
		alert("保存学生出错!");
	}
	loadStudentByClass();
	$("newStudentName").value = "";
	$("newStudentAge").value = "";
	$("newStudentSex").value = "";
	$("newStudentBirthday").value = "";
}

 

 

分享到:
评论

相关推荐

    AJAX高级的应用--DWR框架使用的学习笔记

    **DWR框架详解** DWR (Direct Web Remoting) 是一个强大的AJAX框架,它...尝试创建一个简单的DWR应用,实现用户登录功能,使用DWR检查用户名是否已存在,同时学习如何在DWR中集成其他Java框架,如Hibernate或MyBatis。

    dwr笔记整理(三)

    综合以上信息,这篇笔记可能详细介绍了如何在DWR环境中集成各种Java库,如Hibernate、Spring、Struts等,以及如何利用这些工具进行数据库交互、项目构建和日志管理。同时,通过分析DWR源码,读者可能还能学习到如何...

    Java框架学习笔记.pdf

    Java框架学习笔记主要聚焦在SSH框架,即Struts、Spring和Hibernate的整合应用。SSH是Java企业级开发中广泛使用的三大框架,它们分别负责表现层、业务层和数据持久化层的功能。 首先,Struts作为MVC(模型-视图-控制...

    dwr学习实录

    8. **DWR与其他技术的集成**:了解DWR与Spring、Struts、Hibernate等常见框架的集成,以及如何在AJAX应用中配合使用DWR。 9. **调试与错误处理**:学习DWR提供的调试工具和日志记录,以便在开发过程中有效地定位和...

    dwr案例+文档+jar

    6. **与SSH框架的集成**:理解DWR如何与Spring、Struts和Hibernate等框架集成,以提高开发效率和应用性能。 7. **异常处理**:学习如何处理DWR调用过程中可能出现的错误和异常,提供友好的用户体验。 总之,这个...

    Java框架技术学习笔记.pdf

    本笔记主要探讨了Struts、Hibernate、Spring这三大主流框架以及Ajax技术在实际应用中的整合和使用。 1. SSH框架集成 SSH(Struts、Spring、Hibernate)是Java企业级开发中常见的三位一体框架组合。Struts作为MVC...

    SSH框架+Ajax(运用dwr框架)综合小实例

    标题中的“SSH框架+Ajax(运用dwr框架)综合小实例”指的是在Web开发中,使用Struts2、Spring和Hibernate三大主流Java EE框架(SSH)结合Ajax技术,并通过Direct Web Remoting (DWR) 框架进行前端与后端交互的一个实战...

    Java框架学习笔记

    ### Java框架学习笔记 #### 第一章:框架技术概述 - **SSH框架组合**:SSH是Struts + Spring + Hibernate的简称,这三个框架在Java Web应用开发中非常常见,它们各自解决了不同的问题,并且能够很好地协同工作。 ...

    Java框架技术学习笔记

    ### Java框架技术学习笔记 #### 一、框架技术概述 在现代软件开发中,使用框架可以极大地提高开发效率,减少重复工作。对于Java Web开发来说,Struts、Hibernate、Spring和Ajax是四个非常重要的框架。 - **SSH...

    spring完整资料2

    **学习资源**:压缩包中的文件包括《Spring技术内幕》、《java_spring_day01》、《Spring2.0核心技术与最佳实践》、《使用注解整合Spring和DWR的笔记》、《spring3.0资料》、《Spring从入门到精通》以及《Spring 2.0...

    Ajax总结和java框架学习笔记

    ### Ajax技术概述与Java框架学习笔记 #### 一、Ajax技术简介 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,...

    我的java学习笔记

    这是我在学习java是做的笔记!发在网上和大家分享和学习;文档里包含Spring / Hibernate / Struts /DWR/Oracle/MySql/JSP就打内置对象和两个分页的类等等;

    ajax配置模版

    本篇笔记主要介绍了一个具体的AJAX配置示例,它涉及了Spring框架、Direct Web Remoting (DWR) 和Hibernate等技术的应用。下面将详细解析这些配置代码的关键部分及其作用。 #### 二、web.xml配置分析 **1. Spring上...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).doc

    6. **ExtJS、DWR**: 前端框架和技术。 ### Java 之父 James Gosling 1. **1990 年**: Sun Microsystems 启动“绿色计划”。 2. **1992 年**: 创建 Oak 语言,后更名为 Java。 3. **1994 年**: 在硅谷大会上演示 ...

    xml学习笔试,超级好

    我有全手套的java相关技术的笔记,超级好。如: 1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

    Unix学习笔试,超级好,1_unix.rar

    我有全手套的java相关技术的笔记,超级好。如:1_unix.rar; 2_corejava_tiger.rar; 3_xml.rar; 4_oracle.rar; 5_jdbc.rar; 6_hibernate.rar; 7_html.rar; 8_servlet.rar; 9_jsp.rar; 10_struts2.rar; 11_...

Global site tag (gtag.js) - Google Analytics