在jMaki中对表格进行查询和删除.docx
- 文档编号:13721759
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:11
- 大小:140.54KB
在jMaki中对表格进行查询和删除.docx
《在jMaki中对表格进行查询和删除.docx》由会员分享,可在线阅读,更多相关《在jMaki中对表格进行查询和删除.docx(11页珍藏版)》请在冰点文库上搜索。
在jMaki中对表格进行查询和删除
在jMaki中对表格进行查询和删除
2008-06-2011:
27:
44
查看(64)/
评论(0)
jMaki集成了Dojo,Yahoo,GoogleWebToolKit等Ajax框架,使用jMaki框架可以使web应用程序用户体验迅速提升,本实验通过使用Dojo的DataTable,通过JPA(JavaPersistenceAPI)来实现与后台数据库进行交互。
软件需求
开始之前,需要在您的计算机中安装以下软件。
1、JavaSE5以上版本
2、NetbeansIDE6.0beta或以上的版本(自带JavaDB),注意选择完全安装版
3、NetbeansjMakiajaxsupport,该插件可以通过在Netbeans中选择“工具(Tools)”-“插件(plugin)”-“可用插件(available)”,在列表中可以找到该插件。
实验步骤
第一部分:
查询功能(30分钟)
1、构建数据库:
在Netbeans里打开"服务(Runtime)"窗口,展开数据库节点,右键单击"jdbc:
derby:
//localhost:
1527/sample"这个连接,选择连接,注意用户名和密码都是app。
再次右击该连接,选择"执行命令(ExecuteCommand)",输入以下SQL脚本并执行:
createtableBOOKS(titlevarchar(255),
authorvarchar(255),
isbnvarchar(255),
descriptionvarchar(255),
PRIMARYKEY(isbn))
该SQL语句创建了BOOKS表格,以下SQL语句在表格中插入一些数据:
INSERTINTOBOOKSVALUES('GallowayBookofRunning','JeffGalloway','ABC001','Thebestbookonrunning');
INSERTINTOBOOKSVALUES('TheCompleteBookofRunning','JamesFixx','ABC002','Oldestbookofrunning');
INSERTINTOBOOKSVALUES('TheRunnersHandbook','BobGlover','ABC003','BestsellingGuideforBeginningandIntermediateRunners');
INSERTINTOBOOKSVALUES('DanielRunningFormula','JackTupperDaniels','ABC004','Provenprograms800mtoMarathon');
INSERTINTOBOOKSVALUES('ChiRunning','DannyDrever','ABC005','Revolutionaryapproachtoeffortless,injury-freerunning');
INSERTINTOBOOKSVALUES('RunningforMortals','JohnBingham','ABC006','Acommonsenseplanforchangingyourlifethroughrunning');
INSERTINTOBOOKSVALUES('MarathoningforMortals','JohnBingham','ABC007','Regularpersonguidetomarathon');
INSERTINTOBOOKSVALUES('Marathon','HalHigdon','ABC008','TheUltimateTrainingGuide');
2、创建项目:
新建一个Web应用程序,命名为jmakijpademo:
选择jmaki框架:
点击完成,主窗口会自动打开index.jsp,在组件面板中拖一个Dojo的Table到标签:
400px">下面,如下图所示: 2、创建持久化单元。 右键单击jmakijpademo项目结构,选择"新建"-"通过数据库生成实体类",首先选择新建数据源: 选择BOOKS: 点击下一步,再点击"创建持久化单元": 点击创建后,"包名"写上server: 点击完成,持久性单元即被创建,在配置文件中我们就可以看到persistence.xml这个持久化单元的配置文件了。 3、添加NameQuery。 打开源包中的server-Books.java,在 @NamedQueries({@NamedQuery(name="Books.findByTitle",........ 中的@NamedQuery前面添加一个NamedQuery: @NamedQuery(name="Books.findAll",query="SELECTbFROMBooksb"),注意后面的逗号不要漏了。 4、创建数据读取服务data.jsp。 右键单击项目结构,新建一个JSP页面,命名为data,将页面代码替换为以下代码: <%@pageimport="java.util.*"%> <%@pageimport="server.Books"%> <%@pageimport="javax.persistence.*"%> <% EntityManagerFactoryemf=Persistence.createEntityManagerFactory("jmakijpademoPU"); EntityManagerem=emf.createEntityManager(); List out.println("{columns: ["+ "{label: 'Title',id: 'title'},"+ "{label: 'Author',id: 'author'},"+ "{label: 'ISBN',id: 'isbn'},"+ "{label: 'Description',id: 'description'}"+ "],"); out.println("rows: ["); for(inti=0;i Booksb=list.get(i); out.print("{id: '"+b.getIsbn()+"',"+ "title: '"+b.getTitle()+"',"+ "author: '"+b.getAuthor()+"',"+ "isbn: '"+b.getIsbn()+"',"+ "description: '"+b.getDescription()+"'}"); if(i out.println(","); else out.println(); } out.println("]}"); %> 注意红色部分的代码是持久化单元的名称,这个名称对应于persistence.xml中的持久化单元名称,必须对应,否则程序将无法正常运行。 这段代码事实上是通过持久化单元管理者读取出所有的记录,并构造一个JSON的数据结构 5、打开index.jsp,把widget标签替换为以下: widgetname="dojo.table"service="data.jsp"/> 6、运行项目,我们可以看到数据表中的数据都是从数据库中读取的: 第二部分: 删除功能(15分钟) 1、添加删除的NamedQuery: 在NamedQueries集合里面添加: @NamedQuery(name="Books.deleteByIsbn",query="DELETEFROMBooksbWHEREb.isbn=: isbn") 2、创建删除服务delete.jsp。 创建一个JSP文件,命名为delete,将代码替换为以下的代码: <%@pageimport="javax.persistence.*"%> <% Stringisbn=request.getParameter("isbn"); EntityManagerFactoryemf=Persistence.createEntityManagerFactory("jmakijpademoPU"); EntityManagerem=emf.createEntityManager(); em.getTransaction().begin(); em.createNamedQuery("Books.deleteByIsbn"). setParameter("isbn",isbn). executeUpdate(); em.getTransaction().commit(); %> 注意持久化单元的名称一定要正确。 3、我们企图通过响应客户端的一个onSelected事件,在此事件触发后,我们就把选中的那条记录删掉。 由于这是一个客户端事件,我们必须在客户端去处理这个事件。 打开glue.js,找到 jmaki.subscribe("*onSelect",function(args){ jmaki.log("glue.js: onSelectrequestfrom: "+args.widgetId); }); 这段代码,在jmaki.log这行下面添加以下处理代码: jmaki.doAjax({method: "POST", url: "delete.jsp? isbn="+encodeURIComponent(args.value.isbn), callback: function(_req){ jmaki.publish('/jmaki/table/removeRow',{targetId: args.value.isbn}); } }); 这里,首先获得选中的isbn号,传递给delete.jsp,在数据库中删除选中的记录,回调的时候再把最新的数据发布(在页面删除那行记录)。 4、打开index.jsp,在widget标签里面添加suscribe属性,变为: widgetname="dojo.table"service="data.jsp"subscribe="/jmaki/table"/> 5、单击项目右键,选择"取消部署后再重新部署",刷新一下页面,点击某一行,这行就会被删掉。 我们可以在HTTP监视器里面看到这一过程: 当然,我们也可以使用Yahoo的DataTable,其原理都是一样的。 Demo的来源:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jMaki 表格 进行 查询 删除