《Struts2、Spring和Hibernate应用实例》由会员分享,可在线阅读,更多相关《Struts2、Spring和Hibernate应用实例(21页珍藏版)》请在金锄头文库上搜索。
1、Struts2、Spring和Hibernate应用实例Struts作为MVC2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC2模型的使用、功能齐全的标志库(TagLibrary)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的开发。同时,Hibernate作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以发挥它们各自的优势,使软件开发更加的快速与便捷。struts2发布已经很久了,但关于如何使用它的教程及实例并不多。特别是与Spring及Hibernat
2、e等流行框架的集成,并不多见。现在就将笔者使用Myeclipse工具应用struts2+spring2+hibernate3实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将,希望通过这样的整合示例,让读者了解这些框架各自的特点,以便于在自己的项目中,根据实际情况,尽快的过渡到Struts2的时代。本文的内容基于一、准备工作spring2与1.x区别不大,可以平滑的过度,笔者也是把spring1.28换成了spring2.0.6,算是升级到spring2.0了。struts2基本就是webwork2.2,与以前的struts1.x可以说没任何关系了。因为是第一次
3、用struts2,也是第一次用webwork,所以有很多不完善,不规范的地方,还望大家来拍砖。开发环境:MyEclipse5.0+Eclipse3.2+JDK5.0+Tomcat5.5+struts2+,提供基本的增加、删除、修改、查询等功能。lib包需要以下右图所示的这些包。其中Hibernate3.1的下载地址为:使用的数据库为mysql5.0,使用的JDBC驱动JAR包为:mysql-connection-java-创建数据表的sql语句为:createdatabasegameCREATETABLEbooks(book_idint(11)NOTNULLdefault0,book_name
4、varchar(200)charactersetgb2312defaultNULL,book_authorvarchar(100)charactersetgb2312defaultNULL,book_publishvarchar(100)charactersetgb2312defaultNULL,book_datedatedefaultNULL,book_isbnvarchar(20)defaultNULL,book_pageint(11)defaultNULL,book_pricedecimal(10,2)defaultNULL,book_contentvarchar(100)charact
5、ersetgb2312defaultNULL,PRIMARYKEY(book_id)ENGINE=InnoDBDEFAULTCHARSET=gbkROW_FORMAT=COMPRESSED;二、建立公共类1、AbstractAction类Struts2和Strutsl.x的差别,最明显的就是Struts2是一个pull-MVC架构Struts1.x必须继承,表单数据圭寸装在FormBean中。Struts2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。虽然,在理论上Struts2的Action无须实现任何接口或者是继承任何的类,但是,在实际编
6、程过程中,为了更加方便的实现Action,大多数情况下都会继承,并且重载(Override)此类里的Stringexecute。方法。因此先建立抽象类,以供其它Action类使用。package;import;publicclassAbstractActionextendsActionSupport参考JavaDoc,可知ActionSupport类实现了接口:2、Pager分页类为了增加程序的分页功能,特意建立共用的分页类。package;importjava.math.*;publicclassPagerprivateinttotalRows;/总行数privateintpageSize=
7、5;/每页显示的行数privateintcurrentPage;/当/前页号privateinttotalPages;/总页数privateintstartRow;/当前页在数据库中的起始行publicPager()publicPager(int_totalRows)totalRows=_totalRows;totalPages=totalRows/pageSize;intmod=totalRows%pageSize;if(mod0)totalPages+;currentPage=1;startRow=0;publicintgetStartRow()returnstartRow;publici
8、ntgetTotalPages()returntotalPages;publicintgetCurrentPage()returncurrentPage;publicintgetPageSize()returnpageSize;publicvoidsetTotalRows(inttotalRows)this.totalRows=totalRows;publicvoidsetStartRow(intstartRow)this.startRow=startRow;publicvoidsetTotalPages(inttotalPages)this.totalPages=totalPages;pub
9、licvoidsetCurrentPage(intcurrentPage)this.currentPage=currentPage;publicvoidsetPageSize(intpageSize)this.pageSize=pageSize;publicintgetTotalRows()returntotalRows;publicvoidfirst()currentPage=1;startRow=0;publicvoidprevious()if(currentPage=1)return;currentPage-;startRow=(currentPage-1)*pageSize;publi
10、cvoidnext()if(currentPagetotalPages)last();同时,采用PagerService类来发布成为分页类服务PagerService代码如下:package;publicclassPagerServicepublicPagergetPager(StringcurrentPage,StringpagerMethod,inttotalRows)/定义pager对象,用于传到页面Pagerpager=newPager(totalRows);/如果当前页号为空,表示为首次查询该页/如果不为空,则刷新pager对象,输入当前页号等信息if(currentPage!=nu
11、ll)pager.refresh(Integer.parseInt(currentPage);/获取当前执行的方法,首页,前一页,后一页,尾页。if(pagerMethod!=null)if(pagerMethod.equals(first)pager.first();elseif(pagerMethod.equals(previous)pager.previous();elseif(pagerMethod.equals(next)pager.next();elseif(pagerMethod.equals(last)pager.last();returnpager;三、建立数据持久化层1、编
12、写实体类Books及package;import;publicclassBooks/FieldsprivateStringbookld;/编号privateStringbookName;/书名privateStringbookAuthor;/作者privateStringbookPublish;/出版社privateDatebookDate;/出版日期privateStringbooklsbn;/lSBNprivateStringbookPage;/页数privateStringbookPrice;/价格privateStringbookContent;/内容提要/Constructorspu
13、blicBooks()/PropertyaccessorspublicStringgetBookId()returnbookId;publicvoidsetBookId(StringbookId)this.bookId=bookId;publicStringgetBookName()returnbookName;publicvoidsetBookName(StringbookName)this.bookName=bookName;publicStringgetBookAuthor()returnbookAuthor;publicvoidsetBookAuthor(StringbookAutho
14、r)this.bookAuthor=bookAuthor;publicStringgetBookContent()returnbookContent;publicvoidsetBookContent(StringbookContent)this.bookContent=bookContent;publicDategetBookDate()returnbookDate;publicvoidsetBookDate(DatebookDate)this.bookDate=bookDate;publicStringgetBookIsbn()returnbookIsbn;publicvoidsetBookIsbn(StringbookIsbn)this.bookIsbn=bookIsbn;publicStringgetBookPage()returnbookPage;publicvoidsetBookPage(StringbookPage)this.bookPage=bookPage;publicStringgetBookPrice()returnbookPrice;publicvoidsetBookPrice(StringbookPrice)this.bookPrice=bookPrice;publicStringg