首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

调整hibernate与struts连接数据库的三级联动

2013-03-25 
整合hibernate与struts连接数据库的三级联动1.主要实现功能效果图如下:2.项目案例分析由于地方有限,这里只

整合hibernate与struts连接数据库的三级联动

1.主要实现功能效果图如下:

调整hibernate与struts连接数据库的三级联动

调整hibernate与struts连接数据库的三级联动

调整hibernate与struts连接数据库的三级联动

2.项目案例分析

由于地方有限,这里只列出核心代码,js的编写源码和struts的源码;更多源码,以及数据库见本人资源,0分上传,免费供大家参考学习:tianyazaiheruan

尊重别人的劳动成果与知识产权,转载请指明出处:杨凯专属频道

该项目为一个整合hibernate与struts,利用json对象存放临时数据库数据,连接数据的三级联动;改项目使用ajax传递请求连接和参数;数据库结果为三表级联,三表之间依次都是多对一的关系;其中代码核心代码都附有详细的注释,供大家研讨学习;

其中包括:Select.js:主要实现功能的js;Util.js:工具js,封装一些ajax的请求方法以及创建ajax的方法还有模拟jQuery的根据id获取dom对象;Struts.xml:主要亮点在配置一个多变级联时防止加载多个表的操作,从而达到解决多表级联操作的时候经常出现的session已关闭的bug

3.核心代码

[javascript] view plaincopyprint?
  1. Select.js:主要实现功能的js window.onload = function() {
  2. // 创建省份的节点对象
  3. var provinceDom = $("province");// 创建市的节点对象
  4. var cityDom = $("city");// 创建城镇的节点对象
  5. var countryDom = $("country");
  6. // 实现省的操作 // 发送ajax请求
  7. var url = "./csdn/ProvinceAction_select.action?time="+ new Date().getTime();
  8. sendGet(content, url, getProvinceSuccess, getProvinceFail);
  9. function getProvinceSuccess(xhr) { // 获取省份的json对象
  10. var provinceObj = eval("(" + xhr.responseText +")"); // 获取存放在json对象中的省份数组
  11. var jsonprovinces = provinceObj.provinces;// 遍历省份数组
  12. for ( var i = 0; i < jsonprovinces.length; i++) {// 得到具体的省
  13. var jsonProvince = jsonprovinces[i];// 创建显示省的option
  14. var provinceOption = document.createElement("option");// 设置option标签中具体省的value值
  15. provinceOption.setAttribute("value", jsonProvince.pid);// 设置option标签中具体省的文本,并追加option中
  16. provinceOption.appendChild(document .createTextNode(jsonProvince.pname));
  17. // 将省的option追加到省的select provinceDom.appendChild(provinceOption);
  18. } }
  19. function getProvinceFail() { alert("获取省份失败!");
  20. }
  21. // 实现市的操作 provinceDom.onchange = function() {
  22. // 获取发生改变事件的省的id var pid = this.value;
  23. // 判断是否需要查询的操作 if (pid != -1) {
  24. // 发送ajax请求 var url = "./csdn/CityAction_select.action?time="
  25. + new Date().getTime(); var content = "pid=" + pid;
  26. sendPost(content, url, getCitySuccess, getCityFail);
  27. } };
  28. function getCitySuccess(xhr) {
  29. // 清空数据;清空市
  30. cityDom.length = 1;
  31. // 得到城市的json对象
  32. var cityObj = eval("(" + xhr.responseText +")"); // 由城市的json对象获取城市的数组
  33. var jsonCities = cityObj.cities; for ( var i = 0; i < jsonCities.length; i++) {
  34. // 得到一个具体的市对象 var jsonCity = jsonCities[i];
  35. var cityOption = document.createElement("option");// 设置省的value值
  36. cityOption.setAttribute("value", jsonCity.cid);// 设置省的文本,并追加option中
  37. cityOption.appendChild(document.createTextNode(jsonCity.cname)); cityDom.appendChild(cityOption);
  38. } }
  39. function getCityFail(xhr) {
  40. }
  41. // 实现城镇的操作 cityDom.onchange = function() {
  42. var cid = this.value;
  43. // 判断是否需要查询的操作 if (cid != -1) {
  44. // 发送ajax请求 var url = "./csdn/CountryAction_select.action?time="
  45. + new Date().getTime(); var content = "cid=" + cid;
  46. sendPost(content, url, getcountrySuccess, getcountryFail); }
  47. };
  48. function getcountrySuccess(xhr) {
  49. // 清空数据:城镇 countryDom.length = 1;
  50. var countryObj = eval("(" + xhr.responseText +")");
  51. var jsonCountries = countryObj.countries;for ( var i = 0; i < jsonCountries.length; i++) {
  52. var jsonCountry = jsonCountries[i]; var countryOption = document.createElement("option");
  53. countryOption.setAttribute("value", jsonCountry.tid);countryOption.appendChild(document
  54. .createTextNode(jsonCountry.tname)); countryDom.appendChild(countryOption);
  55. } }
  56. function getcountryFail(xhr) { alert("获取城镇失败!");
  57. } };
  58. Util.js:工具js,封装一些ajax的请求方法以及创建ajax的方法还有模拟jQuery的根据id获取dom对象
  59. //通过id获取dom对象 function $(id) {
  60. return document.getElementById(id); }
  61. // ajax技术必须创建XMLHTTPRequest对象 ,获取XMLHTTPRequest对象的操作
  62. function createXHR() { var xhr;
  63. var aVersion = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ];
  64. try { // 高版本ie、firefox、opera等浏览器直接new出ajax对象
  65. xhr = new XMLHttpRequest(); } catch (e) {
  66. // 低版本的IE,ie6以下版本需要通过以下操作创建ajax对象 for ( var i = 0; i < aVersion.length; i++) {
  67. try { xhr = new ActiveXObject(aVersion[i]);
  68. return xhr; } catch (e) {
  69. continue; }
  70. } }
  71. return xhr; }
  72. //post方式发送请求的方法
  73. function sendPost(content, url, success, fail) {var xhr = createXHR();
  74. // 触发器 xhr.onreadystatechange = function() {
  75. if (xhr.readyState == 4) { if (xhr.status == 200 || xhr.status == 304) {
  76. success(xhr); } else {
  77. fail(xhr); }
  78. } };
  79. // 打开请求 xhr.open("POST", url, true);
  80. // 设置类型 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  81. // 发送请求 xhr.send(content);
  82. }
  83. //get方式发送请求的方法 function sendGet(content, url, success, fail) {
  84. var xhr = createXHR(); // 触发器
  85. xhr.onreadystatechange = function() {if (xhr.readyState == 4) {
  86. if (xhr.status == 200 || xhr.status == 304) {success(xhr);
  87. } else { fail(xhr);
  88. } }
  89. }; // 打开请求
  90. xhr.open("GET", url+"?"+content,true); // 发送请求
  91. xhr.send(null); }
  92. Struts.xml:主要亮点在配置一个多变级联时防止加载多个表的操作,从而达到解决多表级联操作的时候经常出现的session已关闭的bug
  93. <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC
  94. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
  95. <struts> <include file="www/csdn/project/resource/struts-constant.xml" />
  96. <package name="csdn" namespace="/csdn"extends="json-default">
  97. <action name="ProvinceAction_*" class="www.csdn.project.action.ProvinceAction"
  98. method="{1}"> <result type="json">
  99. <!-- 改配置参数为关键,如果不设置改参数json对象会默认加载城市类导致出现session已关闭的错误 --> <param name="includeProperties">provinces\[\d+\]\.pid,provinces\[\d+\]\.pname</param>
  100. </result> <result name="input">/index.jsp</result>
  101. </action>
  102. <action name="CityAction_*" class="www.csdn.project.action.CityAction" method="{1}">
  103. <result type="json"> <param name="includeProperties">cities\[\d+\]\.cid,cities\[\d+\]\.cname</param>
  104. </result> <result name="input">/index.jsp</result>
  105. </action>
  106. <action name="CountryAction_*" class="www.csdn.project.action.CountryAction" method="{1}">
  107. <result type="json"> <param name="includeProperties">countries\[\d+\]\.tid,countries\[\d+\]\.tname</param>
  108. </result> <result name="input">/index.jsp</result>
  109. </action>
  110. </package> </struts>  

热点排行