﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-stargazers-随笔分类-GWT</title><link>http://www.blogjava.net/lzj520/category/35774.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 14 Nov 2008 07:46:35 GMT</lastBuildDate><pubDate>Fri, 14 Nov 2008 07:46:35 GMT</pubDate><ttl>60</ttl><item><title>081108 GWT分页显示数据</title><link>http://www.blogjava.net/lzj520/archive/2008/11/08/239413.html</link><dc:creator>lzj520</dc:creator><author>lzj520</author><pubDate>Sat, 08 Nov 2008 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/lzj520/archive/2008/11/08/239413.html</guid><wfw:comment>http://www.blogjava.net/lzj520/comments/239413.html</wfw:comment><comments>http://www.blogjava.net/lzj520/archive/2008/11/08/239413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lzj520/comments/commentRss/239413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lzj520/services/trackbacks/239413.html</trackback:ping><description><![CDATA[基于上一篇日志的实例的基础上修改：<br />
<br />
<strong>CRUDService.java：<br />
</strong><br />
<p>package client;</p>
<p>import com.google.gwt.user.client.rpc.ServiceDefTarget;<br />
import com.google.gwt.user.client.rpc.RemoteService;<br />
import com.google.gwt.core.client.GWT;</p>
<p>public interface CRUDService extends RemoteService {<br />
&nbsp;&nbsp;&nbsp;&nbsp; Student[] getStudent(String PageNum)&nbsp;&nbsp;&nbsp;&nbsp; ;</p>
<p>&nbsp;&nbsp;&nbsp; String getPagenum();</p>
<p>&nbsp;&nbsp;&nbsp; public static class App {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static CRUDServiceAsync ourInstance = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static synchronized CRUDServiceAsync getInstance() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ourInstance == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ourInstance = (CRUDServiceAsync) GWT.create(CRUDService.class);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((ServiceDefTarget) ourInstance).setServiceEntryPoint(GWT.getModuleBaseURL() + "CRUD/CRUDService");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ourInstance;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
</p>
<br />
<strong>CRUDServiceImpl.java：<br />
</strong><br />
<p>package server;</p>
<p>import com.google.gwt.user.server.rpc.RemoteServiceServlet;<br />
import client.CRUDService;<br />
import client.Student;<br />
import org.hibernate.Session;<br />
import org.hibernate.SessionFactory;<br />
import org.hibernate.Hibernate;<br />
import org.hibernate.Query;<br />
import org.hibernate.cfg.Configuration;<br />
import java.util.List;<br />
import java.util.Iterator;</p>
<p>public class CRUDServiceImpl extends RemoteServiceServlet&nbsp; implements CRUDService {<br />
&nbsp;&nbsp;&nbsp; private static final SessionFactory sessionFactory;<br />
&nbsp;&nbsp;&nbsp; String Pagenum = "1";<br />
&nbsp;&nbsp;&nbsp; static {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create the SessionFactory from hibernate.cfg.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sessionFactory = new Configuration().configure().buildSessionFactory();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Make sure you log the exception, as it might be swallowed<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Initial SessionFactory creation failed." + ex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new ExceptionInInitializerError(ex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static SessionFactory getSessionFactory() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sessionFactory;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public List ListStudent(String PageNum){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =&nbsp; getSessionFactory().getCurrentSession() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query query = session.createSQLQuery("select * from t_student")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addScalar("id", Hibernate.LONG)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addScalar("name", Hibernate.STRING)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addScalar("email", Hibernate.STRING);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int PageSize = 10;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Integer.parseInt(PageNum)!=0 | PageNum!=null ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setFirstResult((Integer.parseInt(PageNum)-1) * PageSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setMaxResults(PageSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setFirstResult(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setMaxResults(PageSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setFirstResult(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setMaxResults(PageSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List ls = query.list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.getTransaction().commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ls;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public int CountStudent(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =&nbsp; getSessionFactory().getCurrentSession() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List ls = session.createSQLQuery("select count(*) from t_student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.getTransaction().commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Integer.parseInt(ls.iterator().next().toString());<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Student[] getStudent(String PageNum){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setPagenum(PageNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student[] student = new Student[this.CountStudent()];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(Iterator it = this.ListStudent(PageNum).iterator();it.hasNext();i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] ob = (Object[] )it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student[i]=new Student(ob[0].toString(),ob[1].toString(),ob[2].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return student;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; public void setPagenum(String pagenum){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Pagenum = pagenum;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getPagenum() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Pagenum;&nbsp; //To change body of implemented methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<br />
<strong>CRUDServiceAsync.java :<br />
</strong><br />
<p>package client;</p>
<p>import com.google.gwt.user.client.rpc.AsyncCallback;</p>
<p>public interface CRUDServiceAsync {</p>
<p>&nbsp;&nbsp;&nbsp; void getStudent(String PageNum, AsyncCallback async);</p>
<p>&nbsp;&nbsp;&nbsp; void getPagenum(AsyncCallback async);<br />
}<br />
<br />
</p>
<strong>CRUD.java :<br />
<br />
</strong>
<p>package client;</p>
<p>import com.google.gwt.core.client.EntryPoint;<br />
import com.google.gwt.user.client.ui.*;<br />
import com.google.gwt.user.client.rpc.AsyncCallback;</p>
<p>public class CRUD implements EntryPoint {<br />
&nbsp;&nbsp;&nbsp; private CRUDServiceAsync&nbsp; crudServiceAsync ;<br />
&nbsp;&nbsp;&nbsp; VerticalPanel main = new VerticalPanel();<br />
&nbsp;&nbsp;&nbsp; FlexTable lb = new FlexTable();<br />
&nbsp;&nbsp;&nbsp; HorizontalPanel hp = new HorizontalPanel();<br />
&nbsp;&nbsp;&nbsp; Button nextpage = new Button("nextpage");<br />
&nbsp;&nbsp;&nbsp; Button prepage = new Button("prepage");<br />
&nbsp;&nbsp;&nbsp; private String pagenum = "1";</p>
<p>&nbsp;&nbsp;&nbsp; public void setPagenum(String pagenum){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.pagenum=pagenum;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public String getPagenum(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.pagenum;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; int&nbsp; prepagenum = 1;<br />
&nbsp;&nbsp;&nbsp; int&nbsp; nextpagenum =1;</p>
<p>&nbsp;&nbsp;&nbsp; public void onModuleLoad() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main.add(lb);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main.add(hp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hp.add(prepage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hp.add(nextpage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RootPanel.get().add(main);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showstudentlist("1");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prepage.addClickListener(new ClickListener(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onClick (Widget sender){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prepagenum = Integer.parseInt(getPagenum())-1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showstudentlist(String.valueOf(prepagenum));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; nextpage.addClickListener(new ClickListener(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onClick (Widget sender){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nextpagenum = Integer.parseInt(getPagenum())+1 ;<br />
&nbsp;&nbsp;&nbsp;&nbsp; showstudentlist(String.valueOf(nextpagenum));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; private void&nbsp; showstudentlist(String pagenum) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRUDService.App.getInstance().getStudent(pagenum,new AsyncCallback(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onFailure(Throwable caught) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onSuccess(Object result) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student s[] = ( Student[])result ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i=0;i&lt;=s.length;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb.setText(i,0,s[i].id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb.setText(i,1,s[i].name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb.setText(i,2,s[i].email);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRUDService.App.getInstance().getPagenum(new AsyncCallback(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onFailure(Throwable caught) {}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onSuccess(Object result) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setPagenum((String)result);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}<br />
</p>
<br />
  <img src ="http://www.blogjava.net/lzj520/aggbug/239413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lzj520/" target="_blank">lzj520</a> 2008-11-08 15:25 <a href="http://www.blogjava.net/lzj520/archive/2008/11/08/239413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>081106 用IEDA创建GWT+HIBERNATE的查询</title><link>http://www.blogjava.net/lzj520/archive/2008/11/06/238940.html</link><dc:creator>lzj520</dc:creator><author>lzj520</author><pubDate>Wed, 05 Nov 2008 23:28:00 GMT</pubDate><guid>http://www.blogjava.net/lzj520/archive/2008/11/06/238940.html</guid><wfw:comment>http://www.blogjava.net/lzj520/comments/238940.html</wfw:comment><comments>http://www.blogjava.net/lzj520/archive/2008/11/06/238940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lzj520/comments/commentRss/238940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lzj520/services/trackbacks/238940.html</trackback:ping><description><![CDATA[<p><strong>CRUD.gwt.xml：</strong></p>
<p>&lt;module&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;inherits name='com.google.gwt.user.User'/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;entry-point class='client.CRUD'/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet path="/CRUD/CRUDService" class="server.CRUDServiceImpl"/&gt;<br />
&lt;/module&gt;<br />
<br />
<strong>EntryPoint：CRUD.java，使用VerticalPanel 来显示List：</strong></p>
<p>package client;</p>
<p>import com.google.gwt.core.client.EntryPoint;<br />
import com.google.gwt.user.client.ui.*;<br />
import com.google.gwt.user.client.rpc.AsyncCallback;</p>
<p>public class CRUD implements EntryPoint {<br />
&nbsp;&nbsp;&nbsp; VerticalPanel main = new VerticalPanel();<br />
&nbsp;&nbsp;&nbsp; FlexTable lb = new FlexTable();<br />
&nbsp;&nbsp;&nbsp; public void onModuleLoad() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main.add(lb);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RootPanel.get().add(main);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRUDService.App.getInstance().getStudent(new AsyncCallback(){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onFailure(Throwable caught) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //To change body of implemented methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onSuccess(Object result) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student s[] = ( Student[])result ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i=0;i&lt;=s.length;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb.setText(i,0,s[i].id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb.setText(i,1,s[i].name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb.setText(i,2,s[i].email);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }) ;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
<strong>ENTITY：Student.java：</strong></p>
<p>package client;</p>
<p>import com.google.gwt.user.client.rpc.IsSerializable;</p>
<p>public class Student implements IsSerializable {<br />
&nbsp;&nbsp;&nbsp; public String id,name,email;<br />
&nbsp;&nbsp;&nbsp; public Student(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public Student(String id,String name,String email) {<br />
&nbsp;&nbsp;&nbsp; this.id=id;<br />
&nbsp;&nbsp;&nbsp; this.name=name;<br />
&nbsp;&nbsp;&nbsp; this.email=email;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
<strong>SERVICE：CRUDService.java：</strong></p>
<p>package client;</p>
<p>import com.google.gwt.user.client.rpc.ServiceDefTarget;<br />
import com.google.gwt.user.client.rpc.RemoteService;<br />
import com.google.gwt.core.client.GWT;</p>
<p>public interface CRUDService extends RemoteService {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Student[] getStudent()&nbsp;&nbsp;&nbsp;&nbsp; ;</p>
<p>&nbsp;&nbsp;&nbsp; public static class App {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static CRUDServiceAsync ourInstance = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static synchronized CRUDServiceAsync getInstance() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ourInstance == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ourInstance = (CRUDServiceAsync) GWT.create(CRUDService.class);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((ServiceDefTarget) ourInstance).setServiceEntryPoint(GWT.getModuleBaseURL() + "CRUD/CRUDService");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ourInstance;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
</p>
<p><br />
<strong><strong>SERVICEImpl：</strong>CRUDServiceImpl.java，这里使用直接连接hibernate的方法用native sql查询数据，不需要专门创建实体类和配置文件：</strong><br />
<br />
package server;</p>
<p>import com.google.gwt.user.server.rpc.RemoteServiceServlet;<br />
import client.CRUDService;<br />
import client.Student;<br />
import org.hibernate.Session;<br />
import org.hibernate.SessionFactory;<br />
import org.hibernate.Hibernate;<br />
import org.hibernate.cfg.Configuration;<br />
import java.util.List;<br />
import java.util.Iterator;</p>
<p>public class CRUDServiceImpl extends RemoteServiceServlet&nbsp; implements CRUDService {<br />
&nbsp;&nbsp;&nbsp; private static final SessionFactory sessionFactory;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; static {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sessionFactory = new Configuration().configure().buildSessionFactory();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Initial SessionFactory creation failed." + ex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new ExceptionInInitializerError(ex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static SessionFactory getSessionFactory() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sessionFactory;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public List ListStudent(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =&nbsp; getSessionFactory().getCurrentSession() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List ls = session.createSQLQuery("select * from t_student")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addScalar("id", Hibernate.LONG)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addScalar("name", Hibernate.STRING)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addScalar("email", Hibernate.STRING).list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.getTransaction().commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ls;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public int CountStudent(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =&nbsp; getSessionFactory().getCurrentSession() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List ls = session.createSQLQuery("select count(*) from t_student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.getTransaction().commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Integer.parseInt(ls.iterator().next().toString());<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Student[] getStudent(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student[] student = new Student[this.CountStudent()];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(Iterator it = this.ListStudent().iterator();it.hasNext();i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] ob = (Object[] )it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student[i]=new Student(ob[0].toString(),ob[1].toString(),ob[2].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return student;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p><br />
<strong>异步调用类CRUDServiceAsync.java：</strong></p>
<p>package client;</p>
<p>import com.google.gwt.user.client.rpc.AsyncCallback;</p>
<p>public interface CRUDServiceAsync {<br />
&nbsp;&nbsp;&nbsp; void getStudent(AsyncCallback async);<br />
}<br />
<br />
<strong>最后，在src目录下创建hibernate.cfg.xml，这里使用mysql：</strong></p>
<p>&lt;?xml version='1.0' encoding='utf-8'?&gt;<br />
&lt;!DOCTYPE hibernate-configuration PUBLIC<br />
&nbsp; "-//Hibernate/Hibernate Configuration DTD//EN"<br />
&nbsp; "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;<br />
&lt;hibernate-configuration&gt;<br />
&nbsp; &lt;session-factory&gt;<br />
&lt;property name="connection.driver_class"&gt;<br />
&nbsp;&nbsp;com.mysql.jdbc.Driver<br />
&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.url"&gt;<br />
&nbsp;&nbsp;jdbc:mysql://localhost:3306/mysql<br />
&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.username"&gt;root&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.password"&gt;root&lt;/property&gt;</p>
<p>&nbsp;&lt;!-- JDBC connection pool (use the built-in) --&gt;<br />
&nbsp;&lt;property name="connection.pool_size"&gt;1&lt;/property&gt;</p>
<p>&nbsp;&lt;!-- SQL dialect --&gt;<br />
&nbsp;&lt;property name="dialect"&gt;<br />
&nbsp;&nbsp;org.hibernate.dialect.MySQLDialect<br />
&nbsp;&lt;/property&gt;</p>
<p>&nbsp;&lt;!-- Enable Hibernate's automatic session context management --&gt;<br />
&nbsp;&lt;property name="current_session_context_class"&gt;thread&lt;/property&gt;</p>
<p>&nbsp;&lt;!-- Disable the second-level cache&nbsp; --&gt;<br />
&nbsp;&lt;property name="cache.provider_class"&gt;<br />
&nbsp;&nbsp;org.hibernate.cache.NoCacheProvider<br />
&nbsp;&lt;/property&gt;</p>
<p>&nbsp;&lt;!-- Echo all executed SQL to stdout --&gt;<br />
&nbsp;&lt;property name="show_sql"&gt;true&lt;/property&gt;</p>
<p>&nbsp;&lt;!-- Drop and re-create the database schema on startup --&gt;<br />
&nbsp;&lt;property name="myeclipse.connection.profile"&gt;mysql for j&lt;/property&gt;<br />
&nbsp; &lt;/session-factory&gt;<br />
&lt;/hibernate-configuration&gt;<br />
</p>
  <img src ="http://www.blogjava.net/lzj520/aggbug/238940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lzj520/" target="_blank">lzj520</a> 2008-11-06 07:28 <a href="http://www.blogjava.net/lzj520/archive/2008/11/06/238940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GWT Out of memory解决办法</title><link>http://www.blogjava.net/lzj520/archive/2008/06/01/205176.html</link><dc:creator>lzj520</dc:creator><author>lzj520</author><pubDate>Sun, 01 Jun 2008 10:23:00 GMT</pubDate><guid>http://www.blogjava.net/lzj520/archive/2008/06/01/205176.html</guid><wfw:comment>http://www.blogjava.net/lzj520/comments/205176.html</wfw:comment><comments>http://www.blogjava.net/lzj520/archive/2008/06/01/205176.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lzj520/comments/commentRss/205176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lzj520/services/trackbacks/205176.html</trackback:ping><description><![CDATA[<img height="640" alt="" src="http://www.blogjava.net/images/blogjava_net/lzj520/RunDialog.JPG" width="825" border="0" />
  <img src ="http://www.blogjava.net/lzj520/aggbug/205176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lzj520/" target="_blank">lzj520</a> 2008-06-01 18:23 <a href="http://www.blogjava.net/lzj520/archive/2008/06/01/205176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>