如何在Struts中实现分页显示数据(2)
由于篇幅较长,所以分开两篇来写。下面是我的一个实际例子,从数据库中分页获取管理员的数据,然后在JSP页面上表示出来。
我的Action的代码:
1
import java.util.List;
2
import javax.servlet.http.
*
;
3![]()
4
import org.apache.struts.action.
*
;
5![]()
6
import xxx.Administrator;
7
import xxx.TurnPageForm;
8
import xxx.PageData;
9![]()
10![]()
/**/
/**
11
* <p>Title: </p>
12
*
13
* <p>Description: </p>
14
*
15
* <p>Copyright: Copyright (c) 2003</p>
16
*
17
* <p>Company: </p>
18
*
19
* @author George Hill
20
* @version 1.0
21
*/
22![]()
23![]()
public
class
AdminListAction extends Action
{
24![]()
25
private static final int NUMBER = 15;
26![]()
27![]()
/**//**
28
* 执行管理员列表操作
29
* @param mapping ActionMapping
30
* @param form ActionForm
31
* @param request HttpServletRequest
32
* @param response HttpServletResponse
33
* @throws Exception
34
* @return ActionForward
35
*/
36
public ActionForward execute(ActionMapping mapping, ActionForm form,
37
HttpServletRequest request,
38![]()
HttpServletResponse response) throws Exception
{
39
HttpSession session = request.getSession();
40![]()
41
//获取页码
42
String pageStr = request.getParameter("page");
43
if (pageStr == null)
44
pageStr = String.valueOf(session.getAttribute("page"));
45
else
46
session.setAttribute("page", pageStr);
47
int page = 1;
48![]()
try
{
49
page = Integer.parseInt(pageStr);
50![]()
} catch (NumberFormatException nfe)
{
51
}
52![]()
53
//获得总记录数
54
int count = Administrator.countAllAdministrators();
55
int maxPage = count / NUMBER;
56
if (count % NUMBER != 0)
57
maxPage++;
58![]()
59
//获得列表
60
List list = Administrator.getAdministrators(NUMBER, (page - 1) * NUMBER);
61![]()
62
if (count != 0 && list == null)
63
list = Administrator.getAdministrators(NUMBER, 0);
64![]()
65![]()
if (list != null)
{
66
PageData data = new PageData(list, page, maxPage);
67![]()
68
request.setAttribute("admins", data);
69
}
70![]()
71
//分页部分
72
TurnPageForm tform = new TurnPageForm();
73
tform.setCurrentPage(page);
74
tform.setMaxPage(maxPage);
75
request.setAttribute("turnPageForm", tform);
76![]()
77
return mapping.findForward("list");
78
}
79
}
80
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
JSP页面部分的代码片断:
1
<
logic:present
name
="admins"
>
2
<
table
width
="90%"
border
="0"
align
="center"
cellpadding
="0"
cellspacing
="1"
class
="table6"
>
3
<
tr
align
="center"
class
="table4"
>
4
<
td
width
="10%"
height
="18"
align
="center"
nowrap class
="head1"
><
bean:message
key
="list.index"
/></
td
>
5
<
td
width
="20%"
class
="head1"
align
="center"
nowrap
><
bean:message
key
="admin.account"
/></
td
>
6
<
td
width
="30%"
class
="head1"
align
="center"
nowrap
><
bean:message
key
="admin.name"
/></
td
>
7
<
td
width
="10%"
class
="head1"
align
="center"
nowrap
><
bean:message
key
="admin.status"
/></
td
>
8
<
td
width
="30%"
class
="head1"
align
="center"
nowrap
><
bean:message
key
="list.action"
/></
td
>
9
</
tr
>
10
<
logic:iterate
name
="admins"
property
="list"
id
="entry"
indexId
="index"
>
11
<
tr
class
="table5"
onmouseover
="changeColor(this, '#99CCFF')"
onmouseout
="changeColor(this, '#F2F3F4')"
>
12
<
td
align
="center"
nowrap
><
bean:write
name
="index"
/></
td
>
13
<
td
align
="center"
nowrap
><
bean:write
name
="entry"
property
="account"
/></
td
>
14
<
td
align
="center"
nowrap
><
bean:write
name
="entry"
property
="name"
/></
td
>
15
<
logic:equal
name
="entry"
property
="status"
value
="true"
>
16
<
td
align
="center"
nowrap
><
bean:message
key
="status.enable"
/></
td
>
17
<
td
align
="center"
nowrap
>
18
<
html:link
page
="/disableAdmin.do?status=false"
paramId
="account"
paramName
="entry"
paramProperty
="account"
onclick
="return MM_popupDisableMsg()"
>
19
<
font
color
="red"
><
bean:message
key
="status.disable"
/></
font
>
20
</
html:link
>
21
<
html:link
page
="/modifyAdmin.do?action=link"
paramId
="account"
paramName
="entry"
paramProperty
="account"
>
22
<
bean:message
key
="action.modify"
/>
23
</
html:link
>
24
<
html:link
action
="/deleteAdmin"
paramId
="account"
paramName
="entry"
paramProperty
="account"
onclick
="return MM_popupDelMsg()"
>
25
<
font
color
="red"
><
bean:message
key
="action.delete"
/></
font
>
26
</
html:link
>
27
</
td
>
28
</
logic:equal
>
29
<
logic:equal
name
="entry"
property
="status"
value
="false"
>
30
<
td
align
="center"
nowrap
><
font
color
="red"
><
bean:message
key
="status.disable"
/></
font
></
td
>
31
<
td
align
="center"
nowrap
>
32
<
html:link
page
="/enableAdmin.do?status=true"
paramId
="account"
paramName
="entry"
paramProperty
="account"
>
33
<
bean:message
key
="status.enable"
/>
34
</
html:link
>
35
<
html:link
page
="/modifyAdmin.do?action=link"
paramId
="account"
paramName
="entry"
paramProperty
="account"
>
36
<
bean:message
key
="action.modify"
/>
37
</
html:link
>
38
<
html:link
action
="/deleteAdmin"
paramId
="account"
paramName
="entry"
paramProperty
="account"
onclick
="return MM_popupDelMsg()"
>
39
<
font
color
="red"
><
bean:message
key
="action.delete"
/></
font
>
40
</
html:link
>
41
</
td
>
42
</
logic:equal
>
43
</
tr
>
44
</
logic:iterate
>
45
</
table
>
46
<
table
width
="90%"
border
="0"
align
="center"
cellpadding
="3"
cellspacing
="0"
>
47
<
tr
>
48
<
td
align
="left"
></
td
>
49
<
html:form
action
="/turnPage"
method
="POST"
>
50
<
td
align
="right"
nowrap
>
51
<
html:hidden
property
="url"
value
="/listAdmin.do"
/>
52
<
html:hidden
property
="currentPage"
/>
53
<
html:hidden
property
="maxPage"
/>
54
<
bean:message
key
="page.the"
/>
55
<
bean:write
name
="admins"
property
="page"
/>
56
<
bean:message
key
="page.page"
/>
/
57
<
bean:message
key
="page.all"
/><
bean:write
name
="admins"
property
="maxPage"
/><
bean:message
key
="page.page"
/>
58
<
bean:message
key
="page.turn"
/>
59
<
logic:equal
name
="admins"
property
="maxPage"
value
="1"
>
60
<
html:text
property
="page"
styleClass
="input_log"
styleId
="page"
size
="3"
value
=""
disabled
="true"
/>
61
<
html:submit
property
="turn"
styleClass
="t_input"
styleId
="turn"
value
="GO"
disabled
="true"
/>
62
</
logic:equal
>
63
<
logic:notEqual
name
="admins"
property
="maxPage"
value
="1"
>
64
<
html:text
property
="page"
styleClass
="input_log"
styleId
="page"
size
="3"
value
=""
/>
65
<
html:submit
property
="turn"
styleClass
="t_input"
styleId
="turn"
value
="GO"
/>
66
</
logic:notEqual
>
67
<
logic:equal
name
="admins"
property
="firstPage"
value
="true"
>
68
<
html:submit
property
="first"
styleClass
="t_input"
styleId
="first"
disabled
="true"
><
bean:message
key
="page.first"
/></
html:submit
>
69
<
html:submit
property
="preview"
styleClass
="t_input"
styleId
="preview"
disabled
="true"
><
bean:message
key
="page.previous"
/></
html:submit
>
70
</
logic:equal
>
71
<
logic:notEqual
name
="admins"
property
="firstPage"
value
="true"
>
72
<
html:submit
property
="first"
styleClass
="t_input"
styleId
="first"
><
bean:message
key
="page.first"
/></
html:submit
>
73
<
html:submit
property
="preview"
styleClass
="t_input"
styleId
="preview"
><
bean:message
key
="page.previous"
/></
html:submit
>
74
</
logic:notEqual
>
75
<
logic:equal
name
="admins"
property
="lastPage"
value
="true"
>
76
<
html:submit
property
="next"
styleClass
="t_input"
styleId
="next"
disabled
="true"
><
bean:message
key
="page.next"
/></
html:submit
>
77
<
html:submit
property
="last"
styleClass
="t_input"
styleId
="last"
disabled
="true"
><
bean:message
key
="page.last"
/></
html:submit
>
78
</
logic:equal
>
79
<
logic:notEqual
name
="admins"
property
="lastPage"
value
="true"
>
80
<
html:submit
property
="next"
styleClass
="t_input"
styleId
="next"
><
bean:message
key
="page.next"
/></
html:submit
>
81
<
html:submit
property
="last"
styleClass
="t_input"
styleId
="last"
><
bean:message
key
="page.last"
/></
html:submit
>
82
</
logic:notEqual
>
83
</
td
>
84
</
html:form
>
85
</
tr
>
86
</
table
>
87
</
logic:present
>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
实际的页面效果图:
OK,我的整个实现就完成了。我觉得有许多地方还是需要完善的,例如我的实现不够抽象,而且觉得繁琐了点,不过我一直都用着,还没有碰到过什么问题。请各位看完以后多多指教。