好文档 - 专业文书写作范文服务资料分享网站

Struts2、Spring和Hibernate应用实例 

天下 分享 时间: 加入收藏 我要投稿 点赞

Struts2、Spring和Hibernate应用实例

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC 2模型的使用、功能齐全的标志库(Tag Library)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的开发。同时,Hibernate作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以发挥它们各自的优势,使软件开发更加的快速与便捷。 struts2发布已经很久了,但关于如何使用它的教程及实例并不多。特别是与Spring及Hibernate等流行框架的集成,并不多见。现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过这样的整合示例,让读者了解这些框架各自的特点,以便于在自己的项目中,根据实际情况,尽快的过渡到Struts2的时代。本文的内容基于Struts2.0.6。

一、准备工作

spring2与1.x区别不大,可以平滑的过度,笔者也是把spring1.28换成了spring2.0.6,算是升级到spring 2.0了。struts2基本就是webwork2.2,与以前的struts1.x可以说没任何关系了。因为是第一次用struts2,也是第一次用webwork,所以有很多不完善,不规范的地方,还望大家来拍砖。 开发环境:MyEclipse5.0+Eclipse3.2+JDK5.0+

Tomcat5.5+struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个图书进行管理的系统,提供基本的增加、删除、修改、查询等功能。

lib包需要以下右图所示的这些包。其中Struts2.0.6的下载地址为: http://people.apache.org/builds/struts/2.0.6 Hibernate3.1的下载地址为: http://www.hibernate.org spring2.0.6的下载地址为: http://www.springframework.org

使用的数据库为mysql 5.0,使用的JDBC驱动JAR包为:mysql-connection-java-5.0.4-bin 创建数据表的sql语句为: create database game

CREATE TABLE `books` (

`book_id` int(11) NOT NULL default '0',

`book_name` varchar(200) character set gb2312 default NULL, `book_author` varchar(100) character set gb2312 default NULL, `book_publish` varchar(100) character set gb2312 default NULL, `book_date` date default NULL,

`book_isbn` varchar(20) default NULL, `book_page` int(11) default NULL,

`book_price` decimal(10,2) default NULL,

`book_content` varchar(100) character set gb2312 default NULL, PRIMARY KEY (`book_id`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPRESSED;

二、建立公共类 1、AbstractAction类

Struts2和Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构。Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。

虽然,在理论上Struts2的Action无须实现任何接口或者是继承任何的类,但是,在实际编程过程中,为了更加方便的实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并且重载(Override)此类里的String execute()方法。因此先建立抽象类,以供其它Action类使用。

package com.sterning.commons;

import com.opensymphony.xwork2.ActionSupport; public class AbstractAction extends ActionSupport { }

com.sterning.commons.AbstractAction.java

参考JavaDoc,可知ActionSupport类实现了接口: com.opensymphony.xwork2.Action

com.opensymphony.xwork2.LoaleProvider com.opensymphony.xwork2.TextProvider com.opensymphony.xwork2.Validateable com.opensymphony.xwork2.ValidationAware com.uwyn.rife.continuations.ContinuableObject java.io.Searializable java.lang.Cloneable

2、Pager分页类

为了增加程序的分页功能,特意建立共用的分页类。

package com.sterning.commons; import java.math.*; public class Pager {

private int totalRows; //总行数

private int pageSize = 5; //每页显示的行数 private int currentPage; //当前页号 private int totalPages; //总页数

private int startRow; //当前页在数据库中的起始行

public Pager() { }

public Pager(int _totalRows) { totalRows = _totalRows;

totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; }

currentPage = 1; startRow = 0; }

public int getStartRow() { return startRow; }

public int getTotalPages() { return totalPages; }

public int getCurrentPage() { return currentPage; }

public int getPageSize() { return pageSize; }

public void setTotalRows(int totalRows) { this.totalRows = totalRows; }

public void setStartRow(int startRow) { this.startRow = startRow; }

public void setTotalPages(int totalPages) { this.totalPages = totalPages; }

public void setCurrentPage(int currentPage) { this.currentPage = currentPage; }

public void setPageSize(int pageSize) { this.pageSize = pageSize; }

public int getTotalRows() { return totalRows; }

public void first() { currentPage = 1; startRow = 0; }

public void previous() { if (currentPage == 1) { return; }

currentPage--;

startRow = (currentPage - 1) * pageSize; }

public void next() {

if (currentPage < totalPages) { currentPage++; }

startRow = (currentPage - 1) * pageSize; }

public void last() {

currentPage = totalPages;

startRow = (currentPage - 1) * pageSize; }

public void refresh(int _currentPage) { currentPage = _currentPage; if (currentPage > totalPages) { last(); } } }

com.sterning.commons.Pager.java

同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:

package com.sterning.commons; public class PagerService {

public Pager getPager(String currentPage,String pagerMethod,int totalRows) { // 定义pager对象,用于传到页面

Pager pager = new Pager(totalRows); // 如果当前页号为空,表示为首次查询该页

// 如果不为空,则刷新pager对象,输入当前页号等信息 if (currentPage != null) {

pager.refresh(Integer.parseInt(currentPage)); }

// 获取当前执行的方法,首页,前一页,后一页,尾页。 if (pagerMethod != null) { if (pagerMethod.equals(\pager.first();

} else if (pagerMethod.equals(\pager.previous();

} else if (pagerMethod.equals(\pager.next();

} else if (pagerMethod.equals(\pager.last(); } }

return pager; } }

com.sterning.commons.PagerService.java

三、 建立数据持久化层

1、编写实体类Books及books.hbm.xml映射文件。

package com.sterning.books.model; import java.util.Date; public class Books { // Fields

private String bookId;//编号 private String bookName;//书名 private String bookAuthor;//作者 private String bookPublish;//出版社 private Date bookDate;//出版日期 private String bookIsbn;//ISBN private String bookPage;//页数 private String bookPrice;//价格

private String bookContent;//内容提要 // Constructors public Books(){} // Property accessors

public String getBookId() { return bookId; }

public void setBookId(String bookId) { this.bookId = bookId; }

public String getBookName() { return bookName; }

public void setBookName(String bookName) {

Struts2、Spring和Hibernate应用实例 

Struts2、Spring和Hibernate应用实例Struts作为MVC2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC2模型的使用、功能齐全的标志库(TagLibrary)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的开发。同时,Hibernate作为对象持久
推荐度:
点击下载文档文档为doc格式
1s02r4yw276b8ve014gr
领取福利

微信扫码领取福利

微信扫码分享