struts2分页技术
来源:互联网 发布:淘宝暗语的农夫是什么 编辑:程序博客网 时间:2024/06/05 02:24
最近做了一个等级考试报名系统,需要用到struts2分页技术,在网上书上找了很长时间都没发现符合要求的。最后经过自己研究写了一个struts2分页的程序,特此贴出供大家参考。本人是新手,若有些地方不好的还请大家指教。
因为是一个项目的一个小的demo所以需要大家自己修改,已符合自己的要求。
struts.xml中的配置:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="structs.devMode" value="true" /> <constant name="structs.i18n.encoding" value="GBK" /> <!--管理后台的namespace --> <package name="admin" namespace="/admin" extends="struts-default"> <!-- 第一页的处理 --> <action name="Showfirst" class="com.sc.project.action.ShowAction" method="first"> <result name="success">/admin/Student_list.jsp</result> </action> <!--上一页的处理 --> <action name="Showpre" class="com.sc.project.action.ShowAction" method="pre"> <result name="success">/admin/Student_list.jsp</result> </action> <!--下一页的处理 --> <action name="Shownext" class="com.sc.project.action.ShowAction" method="next"> <result name="success">/admin/Student_list.jsp</result> </action> <!--对最后一页的处理 --> <action name="Showlast" class="com.sc.project.action.ShowAction" method="last"> <result name="success">/admin/Student_list.jsp</result> </action> </package> </struts><?xml version="1.0" encoding="UTF-8" ?>
jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>报名信息管理</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!--<meta http-equiv="refresh" content="20"> <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> 共<s:property value="page.totalNum"/>条记录 共<s:property value="page.lastPage"/>页 第<s:property value="page.pageNow"/>页 <br/> <s:url id="url_first" value="admin/Showfirst.action"> </s:url> <s:url id="url_pre" value="admin/Showpre.action"> <s:param name="pageNow" value="pageNow-1"></s:param> </s:url> <s:url id="url_next" value="admin/Shownext.action"> <s:param name="pageNow" value="pageNow+1"></s:param> </s:url> <s:url id="url_last" value="admin/Showlast.action"> </s:url> <s:a href="%{url_first}" mce_href="%{url_first}" >首页</s:a> <s:a href="%{url_pre}" mce_href="%{url_pre}">上一页</s:a> <s:iterator value="examinees" status="status"> <s:url id="url" value="admin/Student_list.action"> <s:param name="page.pageNow" value="page.pageNow"/> </s:url> </s:iterator> <s:a href="%{url_next}" mce_href="%{url_next}">下一页</s:a> <s:a href="%{url_last}" mce_href="%{url_last}">最后一页</s:a> <br/> </body> </html>
实体类
Page类:
package com.sc.project.model; public class Page { private int totalNum; //总记录数 private int lastPage; //最后一页页数 private int firstPage; //第一页 private int pageNow; //当前页数 private int pageSize; //一页包含多少条记录 public int getTotalNum() { return totalNum; } public void setTotalNum(int totalNum) { this.totalNum = totalNum; } public int getLastPage() { return lastPage; } public void setLastPage(int lastPage) { this.lastPage = lastPage; } public int getFirstPage() { return firstPage; } public void setFirstPage(int firstPage) { this.firstPage = firstPage; } public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } }
ShowAction类
package com.sc.project.action; import java.util.List; import com.opensymphony.xwork2.ActionSupport; import com.sc.project.model.Examinee; import com.sc.project.model.Page; import com.sc.project.service.ExamineeService; public class ShowAction extends ActionSupport { private List<Examinee> examinees ; //用于存放考生信息的集合 public List<Examinee> getExaminees() { return examinees; } public void setExaminees(List<Examinee> examinees) { this.examinees = examinees; } private Page page; //引入Page类型变量 private int pageNow; //当前页数 public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } public Page getPage() { return page; } public void setPage(Page page) { this.page = page; } public ExamineeService getExamineeService() { return examineeService; } public void setExamineeService(ExamineeService examineeService) { this.examineeService = examineeService; } private ExamineeService examineeService = new ExamineeService () ; //对第一页的处理 public String first(){ page = examineeService.total(); //获得页数的信息如当前页数 一页包含多少条记录等 page = examineeService.firstPage(page); //设置当前页数为第一页 examinees = examineeService.queryByPage(page); //查找第一页的数据 return SUCCESS; } public String pre(){ page = examineeService.total(); //获得页数的信息如当前页数 一页包含多少条记录等 if(pageNow<1){ //页数小于1时 当前页数,任然为1 pageNow=1; } page.setPageNow(pageNow); //设置当前的页数 examinees = examineeService.queryByPage(page); //查找当前页数的数据 return SUCCESS; } public String next(){ page = examineeService.total(); //获得页数的信息如当前页数 一页包含多少条记录等 if(pageNow<2){ //如果当前页数小于2下一页链接无效,下一页的第一个当前页面为第二页 pageNow=2; } if(pageNow>page.getLastPage()){ pageNow=page.getLastPage(); //如果当前页数大于最大的页数,是当前页数永远是最后一页 } page.setPageNow(pageNow); examinees = examineeService.queryByPage(page); //查找当前页数的数据 return SUCCESS; } public String last(){ page = examineeService.total(); //获得页数的信息如当前页数 一页包含多少条记录等 page = examineeService.lastPage(page); //设置当前页数为最大的也是 examinees = examineeService.queryByPage(page); //查找最后一页的信息 return SUCCESS; } }
ExamineeService类:
package com.sc.project.service;import java.util.List;import com.sc.project.Dao.ExamineeDao;import com.sc.project.Dao.Imp.ExamineeDaoImpl;import com.sc.project.model.Examinee;import com.sc.project.model.Page;import com.sc.project.model.SystemSetting;public class ExamineeService {ExamineeDao examineeDao = new ExamineeDaoImpl();//后台对页数的处理public Page total(){Page page = examineeDao.total();return page;}//后台分页的设置public Page firstPage(Page page) {page = examineeDao.firstPage(page);return page;}public List<Examinee> queryByPage(Page page) {List<Examinee> examinees = examineeDao.list(page);return examinees;}public Page lastPage(Page page) {page = examineeDao.lastPage(page);return page;}}
ExamineeDao类:
package com.sc.project.Dao;import java.util.List;import com.sc.project.model.Examinee;import com.sc.project.model.Page;import com.sc.project.model.SystemSetting;public interface ExamineeDao {public List<Examinee> list(Page page);public Page total();public Page firstPage(Page page);public Page lastPage(Page page);}
dao实现层:
ExamineeDaoImpl类:
package com.sc.project.Dao.Imp;import java.io.File;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.util.Map;import com.opensymphony.xwork2.ActionContext;import com.sc.project.Dao.ExamineeDao;import com.sc.project.model.Examinee;import com.sc.project.model.Page;import com.sc.project.model.SystemSetting;import com.sc.project.util.DB;import com.sc.project.util.SerialNumber;public class ExamineeDaoImpl implements ExamineeDao {public List<Examinee> list(Page page) {int pageSize = page.getPageSize();int pageNow = page.getPageNow();Connection conn = DB.createConn();String sql = "select * from grxx order by id limit " + (pageNow*pageSize-pageSize)+","+pageSize;PreparedStatement ps = DB.prepare(conn, sql);List<Examinee> examinees = new ArrayList<Examinee>();Examinee examinee = null;ResultSet rs = null;try {rs = ps.executeQuery();while(rs.next()){examinee = new Examinee();int id = rs.getInt("id");String zkzNum = rs.getString("Zkzh");String loginNum = rs.getString("Bmh");String examineeName = rs.getString("Xm");String sex = rs.getString("Xb");String registerBoolean = rs.getString("Bmzt");examinee.setId(id);examinee.setExamineeName(examineeName);examinee.setSex(sex);examinee.setLoginNum(loginNum);examinee.setZkzNum(zkzNum);examinee.setRegisterBoolean(registerBoolean);examinees.add(examinee);}} catch (SQLException e) {e.printStackTrace();}finally{DB.close(ps);DB.close(conn);}return examinees;}//统计记录数和页数public Page total() {int totalNum = 0;Connection conn = DB.createConn();String sql = "select count(*) from grxx";PreparedStatement ps = DB.prepare(conn, sql);ResultSet rs = null;try {rs = ps.executeQuery();while(rs.next()){totalNum = rs.getInt(1);}} catch (SQLException e) {e.printStackTrace();}Page page = new Page();page.setPageSize(10);int pageSize = page.getPageSize();int lastPage = totalNum/pageSize;if(totalNum%pageSize==0){page.setLastPage(lastPage);}if(totalNum%pageSize!=0){page.setLastPage(lastPage+1);}page.setTotalNum(totalNum);page.setPageNow(1);return page;}public Page firstPage(Page page){page.setPageNow(1); return page;}public Page lastPage(Page page){page.setPageNow(page.getLastPage());return page; }}
连接数据库的类
DB类:
package com.sc.project.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DB {public static Connection createConn() {Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } String url="jdbc:mysql://localhost/djks"; String user="root"; String password="root"; try { conn = DriverManager.getConnection(url,user,password); } catch (SQLException e) { e.printStackTrace(); } return conn;}public static PreparedStatement prepare(Connection conn, String sql) {PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();}return ps;}public static void close(Connection conn) {try {conn.close();conn = null;} catch (SQLException e) {e.printStackTrace();}}public static void close(Statement stmt) {try {stmt.close();stmt = null;} catch (SQLException e) {e.printStackTrace();}}public static void close(ResultSet rs) {try {rs.close();rs = null;} catch (SQLException e) {e.printStackTrace();}}}
由于是从一个项目中截出来的 所以有些是多余的 大家自己删改。 今天时间不多了 就写到这里。以后会陆续贴出我在这个项目中学到的东西。。。。。
- struts2分页技术
- Struts2的分页技术
- struts2分页技术
- java + struts2 分页技术
- 分页技术pager-taglib.jar struts2
- 分页技术pager-taglib.jar struts2 啊啊
- struts2 spring hibernate4.0分页技术
- struts2实现最简单的分页技术
- struts2 spring hibernate4.0分页技术
- 基于Struts2框架的分页技术分享
- struts2+hibernate+工具类实现真分页技术
- Struts2 下 基于Freemarker模板技术的分页组件设计
- struts2分页
- struts2分页
- struts2 分页
- Struts2 分页
- struts2 分页
- struts2分页
- 总线的分离式通信
- 分页
- C#中的字符串简单倒序
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- stage.frameRate改变帧频
- struts2分页技术
- C#编码规范
- 动态规划 POJ 1037 A decorative fence
- mybatis limit的使用
- html DIV 滚动条
- Tuxedo性能测试基础
- 关于cytoscape插件
- CRC原理及其逆向分析方法
- Linux下的多线程编程