java

位置:IT落伍者 >> java >> 浏览文章

Struts2分页实现源码


发布日期:2019年01月08日
 
Struts2分页实现源码
介绍

)Struts相当于是servlet和servelt不同的是当提交到strutsxml中之后通过aciton标签就可以直接调用想用的方法减少了代码量

)在ActionSuport中set方法是注入即是set方法是获取jsp页面中传过来的值get方法是是向jsp页面发送值值得一提的是有了get和set方法之后就取代了servlet中的

requestgetParameter(和重定向的操作在这里要重点理解get和set方法的使用

)在struts分页中set和set方法更能突出它的用法

下面来看实例把!

)首先访问这个页面时就应该查找出nowPage为信息所以在action中要判断nowPage是否为空

在jsp页面的分页判断可以写为

<div>

<a ${pagntextPath}/findAllProaction?nowPage=>首页</a>

<a ${pagntextPath}/findAllProaction?nowPage=${nowPage<=?:nowPage}>上一页</a>

<a ${pagntextPath}/findAllProaction?nowPage=${nowPage+>=untPage?untPage:nowPage+}>下一页</a>

<a ${pagntextPath}/findAllProaction?nowPage=${untPage}>末页</a>

</div>

当然可以在Page中封装好nowPage的判断在这里主要介绍action

当点击下一页的时候会连接到findAllProaction这个strutsxml中的action

strutsxml 文件为

<?xml version= encoding=GBK?>

<!DOCTYPE struts PUBLIC

//Apache Software Foundation//DTD Struts Configuration //EN

/dtds/strutsdtd>

<struts>

<package name=pro namespace=/ extends=strutsdefault>

<action name=findAllPro class=cncsdnhractionProvinceAction method=findAll>

<result>/listjsp</result>

</action>

</package>

</struts>

从strutsxml中可以看出findAllPro连接到的是cncsdnhractionProvinceAction下的findAll方法我们去找ProvinceAction

// 分页查询

public String findAll() {

if (equals(nowPage) || nowPage == null) {

thisnowPage = ;

}

Systemoutprintln(nowPage + ==============

page = new PageWhere(Province nowPage where <

// page= pagegetDatas()

return SUCCESS;

}

因为要返回到jsp页面所以要写一个get方法来把page传到jsp页面中

// 得到page的值 并把得到的值放到page中page可以获取所有的东西

private PageWhere page;

public PageWhere getPage() {

return page;

}

这样就把当前页的信息传到了jsp中但是在分页的时候因为nowPage是jsp和struts来回传的值并且是一个变量所以设置一个属性nowPage生成get和set方法来获取nowPage和把修改的nowPage传到jsp中整个ProvinceAction页面为

package cncsdnhraction;

import cncsdnhrHibernateUtilPageWhere;

import cncsdnhrdomainProvince;

import cncsdnhrserviceProvinceService;

import cncsdnhrserviceProvinceServiceImpl;

import comopensymphonyxworkActionSupport;

public class ProvinceAction extends ActionSupport {

/**

* get方法是向jsp页面中传值 set方法向获取jsp页面的值

*/

private static final long serialVersionUID = L;

private ProvinceService provinceService = new ProvinceServiceImpl()

private Integer id;

private String name;

public ProvinceAction() {

super()

}

// 通过页面注入进来的id的名称一定要和表单中 的一致

public void setId(Integer id) {

thisid = id;

}

public void setName(String name) {

thisname = name;

}

// 接收传过来的nowPage

private Integer nowPage;

public void setNowPage(Integer nowPage) {

thisnowPage = nowPage;

}

public Integer getNowPage() {

return nowPage;

}

// 得到page的值 并把得到的值放到page中page可以获取所有的东西

private PageWhere page;

public PageWhere getPage() {

return page;

}

// 分页查询

public String findAll() {

if (equals(nowPage) || nowPage == null) {

thisnowPage = ;

}

Systemoutprintln(nowPage + ==============

page = new PageWhere(Province nowPage where <

// page= pagegetDatas()

return SUCCESS;

}

}

整个jsp页面为

<body>

<div align=center>

<h>

省市操作

</h>

<table border=px cellpadding=px cellspacing=px width=px>

<tr>

<th>

编号

</th>

<th>

省名

</th>

<th>

操作

</th>

</tr>

<tbody>

<c:forEach items=${pagedatas} var=entity>

<tr align=center>

<td>

${entityid}

</td>

<td>

${entityname}

</td>

<td>

<a ${pagntextPath}/insertjsp>添加</a>

<a ${pagntextPath}/delProaction?id=${entityid}>删除</a>

<a ${pagntextPath}/updateProaction?id=${entityid}>编辑</a>

</td>

</tr>

</c:forEach>

</tbody>

</table>

<br/>

<div>

<a ${pagntextPath}/findAllProaction?nowPage=>首页</a>

<a ${pagntextPath}/findAllProaction?nowPage=${nowPage<=?:nowPage}>上一页</a>

<a ${pagntextPath}/findAllProaction?nowPage=${nowPage+>=untPage?untPage:nowPage+}>下一页</a>

<a ${pagntextPath}/findAllProaction?nowPage=${untPage}>末页</a>

</div>

</div>

</body>

以上数据和从hibernate配置的数据库中读取出来的分页学会了这个就是小case了主要看其中的注释就ok了但是在写更新的时候需要注意

更新需要在更新完之后要在内部跳转到查询的页面所以结果应写为

<result type=chain>findAllPro</result>

记住要写type类型

上一篇:Hibernate一对多双向映射及乐观锁使用

下一篇:用hibernate查询一段时间的记录