




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IBATIS+DWR构建webapp2009.10.11王凡WW1. 简介1.1. Ibatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。1.2. DwrDwr(Direct Web Remoting):是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.1.3. 准备Ibatis最新版是3.0beta,不太成熟,选择较近的版本,下载地址为:/ibatis/binaries/ibatis.java/ibatis-26.zipDwr最新版本为3rc1,下载地址为:/files/documents/2427/120387/dwr.jar2. 配置首先是在eclipse中新建一个webapp。我们要达到的目标很简单,就是直接在前端用js调用后面的sql。2.1. Ibatis配置在src下面新建一个sqlMapComfig.xml文件作为Ibatis的配置文件,内容很简单:property name=JDBC.ConnectionURLvalue=jdbc:oracle:thin:2:1521:bidev2.2. Dwr的配置在web-info目录下面找到web.xml,在其中添加以下两段:dwr-invokerDWR ServletDirect Web Remoter Servletorg.directwebremoting.servlet.DwrServletdebugtruedwr-invoker/ts/*红色部分可以替换为自己项目的名称。然后在当前目录下建立一个dwr.xml得文件启动项目可以查看下:http:/localhost:8008/youapp/ts3. 认识Ibatis需要一个factory的类,首先编写一个factory类,代码如下:package .tsingtao;import java.io.Reader;import java.nio.charset.Charset;import org.apache.log4j.Logger;import mon.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class sqlFactory private static SqlMapClient sqlMapper;private static Logger log = Logger.getLogger(sqlFactory.class );statictryString resource = sqlMapConfig.xml;Resources.setCharset(Charset.forName(UTF-8);Reader reader = Resources.getResourceAsReader(resource);sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);catch(Exception e)System.out.println(e);log.error(e); throw new RuntimeException(e);public static SqlMapClient getSqlMapClient()return sqlMapper;3.1. 认识ibatis在上面的sqlmap的配置文件中,红色部分为调用外部的sqlmap文件,我们的sql代码写在里面。先写句简单的:select abc from dualJava中调用的代码为:System.out.print(sqlFactory.getSqlMapClient().queryForObject(test);3.2. 认识Dwr在dwr.xml文件中添加:红色是在allow中添加一个对应关系。新建一个test类,路径为上面的value。package .tsingtao;public class test public String getname()return wangfan;打开地址:http:/localhost:8008/oracledimn/ts打开这个超链接。找到刚刚新建的方法:运行它看下它的执行代码: getname( ); var reply0 = function(data) if (data != null & typeof data = object) alert(dwr.util.toDescriptiveString(data, 2); else dwr.util.setValue(d0, dwr.util.toDescriptiveString(data, 1); Reply0为回调函数。4. DWR进阶4.1. Dwr与pojo新建一个pojo类package .tsingtao.pojo;public class user private String NAME;private int AGE;public void setNAME(String name)NAME=name;public void setAGE(int age)AGE=age;public String getNAME()return NAME;public int getAGE()return AGE;返回一个user类的数组:public user changeu(user u)user uss=new user10;for(int i=0;i10;i+)user us=new user();us.setNAME(u.getNAME()+HI+i);us.setAGE(u.getAGE()+10+i);ussi=us;return uss;页面调用代码function testp()var user=;user.NAME = WF; user.AGE = 21; test.changeu(user, reply2)var reply2 = function(data) if (data != null & typeof data = object) alert(dwr.util.toDescriptiveString(data, 2); else alert(dwr.util.toDescriptiveString(data, 1);在这里调用成功的话,直接转换为字符串弹出。使用复杂的数据类型需要在dwr里面加个转换4.2. Dwr与ArrayList依旧是在test中写一个函数:public Map getmap()Map mp=new HashMap();mp.put(a,b);return mp;public List getlist()List li=new ArrayList();li.add(getmap();li.add(getmap();return li;在dwr中加转换:页面调用:function testli() test.getlist(reply1); var reply1=function(data) alert(data.length); 4.3. 小结在这里dwr将pojo和map,list装换成了json。5. DWR,ibatis在这里的主要思路是将ibatis查询出的结果放到一个list中,再将list的结果以json的形式传到前台工js使用。5.1. Sqlmap在sqlmap的result类型中一般是resultType和resultClass,在开始的时候我们返回的是String型,所以选择的是String,选择我们要返回一个List,但是单挑记录可以组成HashMap 。select sa.agent_name,sa.host_port,sad.agent_desc from snp_agentsa,snp_agent_desc sad where sad.i_agent(+)=sa.i_agent order bysa.i_agent5.2. 中间层中间我们可以写个通用的java方法:package .tsingtao;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class sqlBase public List getList(String QueryName) throws SQLExceptionArrayList al = (ArrayList) sqlFactory.getSqlMapClient().queryForList(QueryName);return al;在dwr中添加映射5.3. 前台function sqllist() sqlbase.getList(agentList,reply); var reply=function(data) if (data != null & typeof data = object) options=data; dwr.util.removeAllOptions(agentOption);/将返回的结果填充到listbox中 dwr.util.addOptions(agentOption, data, HOST_PORT,AGENT_NAME, escapeHtml:false ); selectChanged(document.getElementById(agentOption); else alert(dwr.util.toDescriptiveString(data, 1); 5.4. 正在加载的代码Dwr提供正在加载的文字,已经封装好了,在body标签中onload的事件中添加dwr.util.useLoadingMessage(正在读取数据,请稍候!);需要图片的则需要另外的代码function useLoadingImage(imageSrc,txtd) var loadingImage; var txt=正在加载.; if (imageSrc) loadingImage = imageSrc; else loadingImage = /images/Loading.gif; if(txtd) txt=txtd dwr.engine.setPreHook(function() var disabledImageZone = $(disabledImageZone); if (!disabledImageZone) disabledImageZone = document.createElement(div); disabledImageZone.setAttribute(id, disabledImageZone); disabledImageZone.style.position = absolute; disabledImageZone.style.zIndex = 1000; disabledImageZone.style.left = 0px; disabledImageZone.style.top = 0px; disabledImageZone.style.width = 100%; disabledImageZone.style.height = 100%; var imgDiv=document.createElement(div); var imageZone = document.createElement(img); imageZone.setAttribute(id, imageZone); imageZone.setAttribute(src, imageSrc); imageZone.style.position = absolute; var w = document.body.clientWidth; var h = document.body.clientHeight; var t = h / 2 - 10; var r = w / 2 - 10; imageZone.style.top = t+px; imageZone.style.right = r+px; imgDiv.appendChild(imageZone); var txtDiv=document.createElement(div); txtDiv.style.position = absolute; t=t+70; r=r-10; txtDiv.style.top = t+px; txtDiv.style.right = r+px; txtDiv.innerText=txt; txtDiv.style.color=red; dis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨界艺术品投资融资咨询与风险评估合同
- 2025年生物科技公司实验试剂及耗材采购协议
- 2025年营业员职位劳动合同续签与薪酬结构改革协议
- 2025智慧城市代步车租赁运营管理合同
- 2025年全球知识产权保护与竞业禁止合同
- 2025年绿色金融小贷公司个人生态医疗贷款合同范本
- 2025智能消毒设备采购与维护服务合同
- 2025版婚姻终止后财产清算与子女抚养权委托服务协议
- 2025年专业办公复印机租赁与全系列耗材定制服务合同
- 地板知识培训课程表课件
- 喉炎病人护理课件
- 通信质量员试题及答案
- 银行还款证明协议书
- 《初中英语教师教学经验分享课件》
- TSG Z7002-2022特种设备检测机构核准规则
- 基于数据的员工能力预测模型-全面剖析
- 中国茶文化双语故事课件
- GB/T 45411.2-2025光学和光子学瞄准望远镜规范第2部分:高性能仪器
- 少数民族民歌 课件-2024-2025学年高一上学期音乐人音版(2019)必修音乐鉴赏
- Android移动应用开发(微课版)全套教学课件
- 腰椎间盘突出症试讲教案
评论
0/150
提交评论