Hibernate+DWR无刷新三级联动
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
使用DWR首先加入DWR的jar包.我这里用的是2.0.5的.
看代码吧,首先是index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>ajax三级联动</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"> <script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<!-- 导入DWR 为Java 对象动态生成的JavaScript 文件-->
<script type="text/javascript" src="dwr/interface/mydwr.js"></script>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script></head>
<script type="text/javascript">
$(function(){
mydwr.findProvince(function(pro){
for(var i=0;i<pro.length;i++){
$(".province").append("<option value="+pro[i].id+">"+pro[i].province+"</option>");
}
});
}); </script>
<body>
省:<select name="province" class="province">
<option value="0">==请选择==</option>
</select>
市:<select name="city" class="city">
<option>==请选择==</option>
</select>
区:<select name="town" class="town">
<option>==请选择==</option>
</select>
</body>
<script type="text/javascript">
$(".province").change(function(){
if($(".province").val()==0){
$(".city option").remove();
$(".city").append("<option value=0>==请选择==</option>");
$(".town option").remove();
$(".town").append("<option value=0>==请选择==</option>");
return;
}
mydwr.findCityById($(this).val(),function(city){
$(".city option").remove();
$(".city").append("<option value=0>==请选择==</option>");
for(var i=0;i<city.length;i++){
$(".city").append("<option value="+city[i].id+">"+city[i].city+"</option>");
}
});
});
$(".city").change(function(){
if($(".city").val()==0){
$(".town option").remove();
$(".town").append("<option value=0>==请选择==</option>");
return;
}
mydwr.findTownById($(this).val(),function(town){
$(".town option").remove();
$(".town").append("<option value=0>==请选择==</option>");
for(var i=0;i<town.length;i++){
$(".town").append("<option value="+town[i].id+">"+town[i].town+"</option>");
}
});
});
</script>
</html>
三个实体类
package cn.yo.entity; import java.util.HashSet;
import java.util.Set; public class Province implements java.io.Serializable { private Integer id;
private String province;
private Set cities = new HashSet(0);
//省略了get,set方法
}
package cn.yo.entity; import java.util.HashSet;
import java.util.Set; public class City implements java.io.Serializable { private Integer id;
private Province province;
private String city;
private Set towns = new HashSet(0);
//省略了get,set方法
}
package cn.yo.entity; public class Town implements java.io.Serializable { private Integer id;
private City city;
private String town;
//省略了get,set方法
}
dao类
package cn.yo.dao; import java.util.List;
import org.hibernate.Session;
import cn.yo.entity.City;
import cn.yo.entity.Province;
import cn.yo.entity.Town; public class ProvinceDao {
//查询全部省
public List<Province> findProvince(){
Session session=HibernateSessionFactory.getSession();
String hql="from Province";
List<Province> province=session.createQuery(hql).list();
if(province.size()>0){
return province;
}
else{
return null;
}
}
//根据省的Id查询该省下的全部市
public List<City> findCityById(int id){
Session session=HibernateSessionFactory.getSession();
String hql="from City c where c.province.id='"+id+"'";
List<City> city=session.createQuery(hql).list();
if(city.size()>0){
return city;
}else{
return null;
}
}
//根据市的Id查询该市下的全部镇
public List<Town> findTownById(int id){
Session session=HibernateSessionFactory.getSession();
String hql="from Town t where t.city='"+id+"'";
List<Town> town=session.createQuery(hql).list();
if(town.size()>0){
return town;
}else{
return null;
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- DWR -->
<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>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param> </servlet>
<servlet-mapping>
<servlet-name>dwr_invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>
dwr.xml:没有他就没有DWR哦,放在web.xml同一目录下
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE dwr PUBLIC
3 "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
4 "http://getahead.org/dwr/dwr20.dtd">
5
6 <dwr>
7 <allow>
8 <create javascript="mydwr" creator="new">
9 <param name="class" value="cn.yo.dao.ProvinceDao"/>
10 </create>
11 <convert match="cn.yo.entity.Province" converter="bean"/>
12 <convert match="cn.yo.entity.City" converter="bean"/>
13 <convert match="cn.yo.entity.Town" converter="bean"/>
14 </allow>
15 </dwr>
代码全部贴出,希望能给初学者一点帮助.写的不好,希望大家能提出建议.小弟感激不尽
原创作品,转载请注明出处.
Hibernate+DWR无刷新三级联动的更多相关文章
- Hibernate+struts+JqueryAjax+jSON实现无刷新三级联动
看网上JqueryAjax三级联动的例子讲不是很全,代码也给的不是很全,给初学者带来一定的难度.小弟自己写了一个,可能有些地方不是很好,希望大家能够提出建议. 用的是Hibernate+struts2 ...
- JQuery中国省市区无刷新三级联动查询
之前有写过用<Ajax控件来实现中国的省市区无刷新查询> 今天用JQuery来实现,用Ajax控件和JQuery的优缺点就先不说了. 效果图如下: 下面来结合代码来详细说明一下如何用JQu ...
- Ajax做无刷新三级联动
1.引入JS and Jquery包 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- jquery 无刷新多级联动
原先不熟悉jquery时,总在寻找无刷新的方法,在此不断的积累自己所知道的jquery属性,常用方法.以下为jquery实现的无刷新联动事件 分公司: <select id="Sele ...
- ASP.NET中使用DropDownList实现无刷新二级联动详细过程
Demo.sql create table Car( [id] int identity, ) not null, ) not null ) go insert into Car ([brand],[ ...
- Jquery实现无刷新DropDownList联动
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...
- MVC三级联动无刷新
本篇实现有关客户.订单和产品的无刷新三级联动,先看最终效果: 没有选择时,后2个Select状态为禁用: 当选择第1个Select,第2个Select可供选择,第3个Select依旧禁用: 当选择第2 ...
- JAVA EE 中之AJAX 无刷新地区下拉列表三级联动
JSP页面 <html> <head> <meta http-equiv="Content-Type" content="text/html ...
- 20151222--Ajax三级无刷新
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
随机推荐
- main函数是个什么东西
习惯的main函数有无参和两个参数的版本,那么main函数只能这么写吗? 好奇写了一个bug版本的main,结果是呵呵 #include <iostream> ...
- socket.io+angular.js+express.js做个聊天应用(一)
node,express开发环境等安装如果已经搞好了. justhacker@justhacker-ThinkPad-Edge-E440:~/projects/nodejs$ express -e c ...
- SQL性能优化工具TKPROF
全名为Trace Kernel Profile,用来格式化跟踪文件,是一个命令行工具. 主要的格式例如以下: tkprof tracefile outputfile - tracefile:要分 ...
- 【M26】限制某个class所能产生的对象数量
1.每当产生一个对象,必定调用构造方法.因此,禁止产生对象的做法就是,将所有的构造方法声明为private. 2.只有在类的内部才可以访问private成员,有两层含义:在类的内部可以访问this的p ...
- Codeforces Gym 100523C C - Will It Stop? 水题
C - Will It Stop?Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
- 使用C# 实现文件锁
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Mysql分表教程
一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法.目前我所知道的方法都是MYISAM的,INNODB如何做分表并且保留事务和外键,我还不是 ...
- 实例源码--Android底部功能分类Tab使用实例
下载源码 技术要点: 1.底部功能布局实例 2.TAB使用详细实例 3.详细的源码注释 ...... 详细介绍: 1. 底部功能布局实例 底部功能布局是开发过程中常用到布局,本实例用TAB的方式实现 ...
- c语言中文件的操作
所谓“文件”是指一组相关数据的有序集合.这个数据集有一个名称,叫做文件名.实际上在前面的各章中我们已经多次使用了文件,例如源程序文件.目标文件.可执行文件.库文件 (头文件)等. 文件通常是驻留在外部 ...
- xcode笔记
1.Alt键的使用 2.设置捕捉所有意外断点:停在代码出错处 2015年07月27日09:52:12 3.搜索 command + F:在当前的文件中搜索 command + Shift ...