经典struts2分页方法 JAVA_WEB必备分页
2010-06-01 20:09
399 查看
1. 创建MyThreadLocal类,此类用来存放分页信息和返回的结果集,主要思想是把分页信息放在ThreadLocal中,避免在Service和Dao层传递分页信息
代码如下:
public class MyThreadLocal
{ //新建一个本地变量
private static ThreadLocal tl = new ThreadLocal();
//把分页信息放到ThreadLocal中
public static void setValue(PageModel pm) {
tl.set(pm);
}
//通过ThreadLocal获得分页信息
public static PageModel getValue() {
PageModel pm = (PageModel) tl.get();
if(pm == null) {
pm = new PageModel();
}
return pm;
}
//当调用结束后释放Thread资源
public static void remove() {
tl.remove();
}
}
2. 创建PageModel类,用来存储分页信息和存储数据库返回信息
public class PageModel {
private int total;
private List datas;
private int pageSize;
private int offset;
public int getPageSize() {
return 7;
}
public void setPageSize(int pageSize) {
this.pageSize = 7;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List getDatas() {
return datas;
}
public void setDatas(List datas) {
this.datas = datas;
}
}
3. 创建PageModelInterceptor类,用来接收分页信息
public class PageModelInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invoke) throws Exception {
int offset = 0;
try {
offset = Integer.parseInt(ServletActionContext.getRequest()
.getParameter("pagerOffset"));
} catch (NumberFormatException e) {
}
int pageSize = 8;
PageModel pm = MyThreadLocal.getValue();
pm.setOffset(offset);
pm.setPageSize(pageSize<0 ? Integer.MAX_VALUE : pageSize);
//将pagemodel中相关的分页数据设置好之后放到Threadlocal中
//在后台进行查询的时候从ThreadLocal中取出PageModel对象然后使用分页数据即可。
MyThreadLocal threadLocal = new MyThreadLocal();
threadLocal.setValue(pm);
try {
return invoke.invoke();
}
finally {
//注意等到整个拦截器执行完成即一个ThreadLocal完成它的工作后要清除里面的内容
MyThreadLocal.remove();
}
}
}
4. 后台得到分页参数进行分页
searchpaginated( hql, null, MyThreadLocal.getValue().getOffset(),8
);
源码下载:http://download.csdn.net/source/2416869
代码如下:
public class MyThreadLocal
{ //新建一个本地变量
private static ThreadLocal tl = new ThreadLocal();
//把分页信息放到ThreadLocal中
public static void setValue(PageModel pm) {
tl.set(pm);
}
//通过ThreadLocal获得分页信息
public static PageModel getValue() {
PageModel pm = (PageModel) tl.get();
if(pm == null) {
pm = new PageModel();
}
return pm;
}
//当调用结束后释放Thread资源
public static void remove() {
tl.remove();
}
}
2. 创建PageModel类,用来存储分页信息和存储数据库返回信息
public class PageModel {
private int total;
private List datas;
private int pageSize;
private int offset;
public int getPageSize() {
return 7;
}
public void setPageSize(int pageSize) {
this.pageSize = 7;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List getDatas() {
return datas;
}
public void setDatas(List datas) {
this.datas = datas;
}
}
3. 创建PageModelInterceptor类,用来接收分页信息
public class PageModelInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invoke) throws Exception {
int offset = 0;
try {
offset = Integer.parseInt(ServletActionContext.getRequest()
.getParameter("pagerOffset"));
} catch (NumberFormatException e) {
}
int pageSize = 8;
PageModel pm = MyThreadLocal.getValue();
pm.setOffset(offset);
pm.setPageSize(pageSize<0 ? Integer.MAX_VALUE : pageSize);
//将pagemodel中相关的分页数据设置好之后放到Threadlocal中
//在后台进行查询的时候从ThreadLocal中取出PageModel对象然后使用分页数据即可。
MyThreadLocal threadLocal = new MyThreadLocal();
threadLocal.setValue(pm);
try {
return invoke.invoke();
}
finally {
//注意等到整个拦截器执行完成即一个ThreadLocal完成它的工作后要清除里面的内容
MyThreadLocal.remove();
}
}
}
4. 后台得到分页参数进行分页
searchpaginated( hql, null, MyThreadLocal.getValue().getOffset(),8
);
源码下载:http://download.csdn.net/source/2416869
相关文章推荐
- 举例详解用Java实现web分页功能的方法
- JavaWeb-struts2动态方法调用
- JavaWeb前端分页显示方法
- android webview中使用Java调用JavaScript方法并获取返回值_Android
- java web开发中获取tomcat上properties文件内容的方法
- android webView js方法和java 方法交互
- 使用Struts2开发Java Web应用程序(目录)
- javaweb读取配置文件的4种方法
- 10个经典的 Java main 方法面试题
- 分享十二本经典电子书,涉及java, OO design, spring, hibernate,struts2, agile
- myEclipse建立的web项目用eclipse check出来成java project的解决方法
- Web项目中使用java Struts2实现Zip、xml文件的动态创建和下载(Zip文件中动态存在多个xml文件)
- Java web项目启动后运行一次的方法
- 10个经典的 Java main 方法面试题
- 【视频】自然框架之分页控件的使用方法(二) 下载、DLL说明和web.config的设置
- Java Web中的分页显示——通过界面实现
- 学习总结之JavaWeb实现分页
- linux下查找 java web 应用 cpu占用过高的方法
- javaweb分页思想
- JAVA_WEB经典面试题