Struts
作为
MVC 2
的
Web
框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的
Web
框架,
Struts
自然拥有众多的优点:
MVC 2
模型的使用、功能齐全的标志库(
Tag Library
)、开放源代码。而
Spring
的出现,在某些方面极大的方面了
Struts
的开发。同时,
Hibernate
作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以发挥它们各自的优势,使软件开发更加的快速与便捷。
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;
package
com.sterning.commons;

import
com.opensymphony.xwork2.ActionSupport;


public
class
AbstractAction
extends
ActionSupport
{
}
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();
}
}
}
同时,采用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("first"))
{
pager.first();

} else if (pagerMethod.equals("previous"))
{
pager.previous();

} else if (pagerMethod.equals("next"))
{
pager.next();

} else if (pagerMethod.equals("last"))
{
pager.last();
}
}
return pager;
}
}
com.sterning.commons.PagerService.java
未完待续,下节开始编写数据持久化层.........
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的下载地址为:
Hibernate3.1的下载地址为:
spring2.0.6的下载地址为:
使用的数据库为mysql 5.0,使用的JDBC驱动JAR包为:mysql-connection-java-5.0.4-bin
创建数据表的sql语句为:
create database game














二、 建立公共类
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
)









com.sterning.commons.AbstractAction.java
com.uwyn.rife.continuations.ContinuableObject
2、Pager分页类
为了增加程序的分页功能,特意建立共用的分页类。
































































































































com.sterning.commons.Pager.java
同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:












































未完待续,下节开始编写数据持久化层.........