structs分页组件

来源:互联网 发布:北京网络营销软件价格 编辑:程序博客网 时间:2024/06/05 06:04

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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 <link href="${pageContext.request.contextPath}/image/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/javascript/jquery.min.js"></script>


<script type="text/javascript">
$(function(){
//setMenuHeight
$('.menu').height($(window).height()-51-27-26);
$('.sidebar').height($(window).height()-51-27-26);
$('.page').height($(window).height()-51-27-26);
$('.page iframe').width($(window).width()-15-168);

//menu on and off
$('.btn').click(function(){
$('.menu').toggle();

if($(".menu").is(":hidden")){
$('.page iframe').width($(window).width()-15+5);
}else{
$('.page iframe').width($(window).width()-15-168);
}
});

//
$('.subMenu a[href="#"]').click(function(){
$(this).next('ul').toggle();
return false;
});
})
</script>


</head>
<body>
<div id="wrap">
<div id="header">
    <div class="logo fleft"></div>
    <a class="logout fright" href="login.html"> </a>
    <div class="clear"></div>
    <div class="subnav">
    <div class="subnavLeft fleft"></div>
        <div class="fleft"></div>
        <div class="subnavRight fright"></div>
    </div>
    </div><!--#header -->
    <div id="content">
    <div class="space"></div>
    <div class="menu fleft">
    <ul>
        <li class="subMenuTitle">功能菜单</li>
            <li class="subMenu"><a href="#">请假管理</a>
            <ul>
                <li><a href="${pageContext.request.contextPath}/pages/TeacherAction!getAllLeave.do">所有假单</a></li>
                    <li><a href="${pageContext.request.contextPath}/pages/TeacherAction!getAllnoragreeLeave.do">待审批假单</a></li>
                    <li><a href="${pageContext.request.contextPath}/pages/TeacherAction!getAllAgreeLeave.do">已同意假单</a></li>
                    <li><a href="${pageContext.request.contextPath}/pages/TeacherAction!getAllDisagreeLeave.do">不同意假单</a></li>
                </ul>
            </li>
            <li class="subMenu"><a href="#" target="right">个人信息管理</a></li>
        </ul>
    </div>
    <div class="sidebar fleft"><div class="btn"></div></div>
    <div class="page">
     <h6 align="center">所有假单列表</h6>   
                                   
   <table width="80%" border="1"  cellpadding="0"  style="border-collapse:collapse;" bordercolor="#000000">
   <tr>
      <th align="center">序号</th>
      <th align="center">学生名字</th> 
      <th align="center">学生编号</th> 
      <th align="center">班级</th> 
      <th align="center">请假原因</th> 
      <th align="center">请假开始时间</th> 
      <th align="center">请假结束时间</th>
       <th align="center">状态</th>
   </tr>
   <s:iterator value="leavelist"  status="list" >
   <tr>
      <s:hidden name="id" value="leaveId"></s:hidden>
      <td align="center" ><s:property value="#list.getIndex()+1"/></td>
      <td align="center" ><s:property value="stuName" /></td>
      <td align="center"><s:property value="stuId" /></td>
      <td align="center"><s:property value="class_" /></td>
      <td align="center"><s:property value="leaveReason" /></td>
      <td align="center"><s:property value="leaveDate" /></td>
      <td align="center"><s:property value="leaveTime" /></td> 
      <td align="center"><s:property value="agreeOrnot" /> </td>    
   </tr>
   </s:iterator>
   </table> 
    共<s:property value="totalCount" />条假单 &nbsp;&nbsp;&nbsp;
     第<s:property value="currentPage" />页&nbsp;&nbsp;&nbsp;共<s:property value="totalPage" />页  &nbsp;&nbsp;&nbsp;
      <%-- 输出页面跳转代码, 分链接和静态文字两种 --%>
    <s:if test="currentPage > 1">
        <a href="${pageContext.request.contextPath}/pages/TeacherAction!getAllLeave.do?page=${ currentPage-1}">上一页</a> 
    </s:if>
    <s:if test="currentPage < totalPage">
        <a href="${pageContext.request.contextPath}/pages/TeacherAction!getAllLeave.do?page=${currentPage+1}">下一页</a> 
     </s:if>
    <%-- 输出 JavaScript 跳转代码 --%>
    <script>
    // 页面跳转函数
    // 参数: 包含页码的表单元素,例如输入框,下拉框等
    function jumpPage(input) {
    // 页码相同就不做跳转
    //if(input.value == ${currentPage}) {
    // return;
  // }
    var newUrl = "${pageContext.request.contextPath}/pages/TeacherAction!getAllLeave.do?page=" + input.value;
    document.location = newUrl;
    }
    </script>
转到
 <!-- 输出 HTML SELECT 元素, 并选中当前页面编码 -->
      <select onchange='jumpPage(this);'>  
      <s:bean name="org.apache.struts2.util.Counter" id="counter">
          <s:param name="first" value="1" />
          <s:param name="last" value="totalPage" />
                     <s:iterator>
                                   <option value="<s:property/>"  
                                   <s:if test="currentPage == currenter -1">selected</s:if>>
                                   <s:property/>
                                   </option>
                      </s:iterator>
        </s:bean>                 


      </select>
      输入页码:<input type="text" value="${currentPage}" id="jumpPageBox" size="3"> 
      <input type="button" value="跳转" onclick="jumpPage(document.getElementById('jumpPageBox'))"/>
    </div>
    </div><!--#content -->
    <div class="clear"></div>
    <div id="footer"></div><!--#footer -->
  </body>
</html>


action:

package com.eduAskFoLeaveSystem.business.action;


import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


import com.eduAskFoLeaveSystem.business.model.Leave;
import com.eduAskFoLeaveSystem.business.model.Manager;
import com.eduAskFoLeaveSystem.business.model.Teacher;
import com.eduAskFoLeaveSystem.business.service.*;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


@Component
public class TeacherAction extends ActionSupport {
@Autowired
private TeacherManager teacherManager;
/***/
@Autowired
private PageService pageService ;
@Autowired
private StudentManager studentManager;
@Autowired
private LeaveManager leaveManager;
public Leave leave;//假单对象
public List<Manager> teacherlist ;
private Integer leaveId;
//分页组件用到的变量定义开始
public String page;
public List<Leave> leavelist ; //假单列表
public int totalPage;
public int totalCount;
public int currentPage;
public int pageSize = 2;
//分页主键用到的变量定义结束
public Leave getLeave() {
return leave;
}
public void setLeave(Leave leave) {
this.leave = leave;
}
public List<Manager> getTeacherlist() {
return teacherlist;
}
public void setTeacherlist(List<Manager> teacherlist) {
this.teacherlist = teacherlist;
}


public Integer getLeaveId() {
return leaveId;
}
public void setLeaveId(Integer leaveId) {
this.leaveId = leaveId;
}


/**
* 使用action的一般配置方法,动态制定执行方法。
* @return
*/
public String addteacher(Teacher teacher){
if(teacherManager.save(teacher))
return "addteacher";
else
return "caozuoshibai";
}

/**
* 删除教师
*/
public String deleteteacher(Teacher teacher){
if(teacherManager.deleteteacher(teacher))
return "deleteteacher";
else
return "caozuoshibai";
}

/**
* 修改教师信息
* @param teacher
* @return
*/
public String updateteacher(Teacher teacher){
if(teacherManager.saveorupdateteacher(teacher))
return "updateteacher";
else
return "caozuoshibai";
}

/**
* 查找所有教师
* @return
*/
public String serchAllteacher(){
List list = teacherManager.findall();
return "showall";
}

/**
* 审批通过假单
* @return
*/
public String agreeLeave(){

leave = leaveManager.findbyleaveId(leaveId);
if(leaveManager.agreeLeave(leave))
return "agreesuccess";
return "agreefail";

}

/**
* 审批不同意假单
* @return
*/
public String disagreeLeave(){
String result = "disagreefail";
leave = leaveManager.findbyleaveId(leaveId);
if(leaveManager.disagreeLeave(leave))
result = "agreesuccess";
return result;
}

/**
* 获取所有同意的假单
*/
   public String getAllAgreeLeave(){
  String st = "from Leave l where l.agreeOrnot= '同意' ";
  System.out.println(st);
  doPageService(st);
  return "AllAgreeLeave";
   }
   
/**
* 获取所有不批准的假单
*/
  public String getAllDisagreeLeave(){
  String st = "from Leave l where l.agreeOrnot= '不同意' ";
  doPageService(st); 
  return "AllDisagreeLeave";
  }
/**
* 获取所有待审批的假单
*/
  public String getAllnoragreeLeave(){
  String st = "from Leave l where l.agreeOrnot= '' ";//hql写法
  doPageService(st);
  return "AllnotagreeLeave";
}
  
  /**
   * 获取所有假单
   * @return
   */
  public String getAllLeave(){
  String st = "from Leave";
  doPageService(st);
  return "AllLeave";
  }
  
  /**
   * 执行分页,传入的是查询的HQL语句,照抄
   */
 public void doPageService(String HQL){
if (page == null || page.length() == 0) {
page = "1";
}
//int currentPage = 0;
currentPage = Integer.parseInt(page);// 当前页码
if (currentPage == 0) {
currentPage = 1;
}
leavelist = pageService.findPagedAll(HQL ,currentPage, pageSize);
totalPage = pageService.getTotalPage(HQL ,pageSize);
totalCount = pageService.getTotalCount(HQL);
 }
  
}

分页服务类:

package com.eduAskFoLeaveSystem.business.service;


import java.util.ArrayList;
import java.util.List;


import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;


import com.eduAskFoLeaveSystem.business.dao.LeaveDAO;
import com.eduAskFoLeaveSystem.business.util.BaseHibernateDAO;


@Component
public class PageService extends BaseHibernateDAO {
private static final Logger log = LoggerFactory.getLogger(LeaveDAO.class);
/**
* 获取总页面数.

* @param pageSize
*            一页显示数据量
* @return 页面总数
*/
public int getTotalPage(String HQL, int pageSize) {
int totalCount = getTotalCount(HQL);


// 得到页面总数
int totalPageCount = ((totalCount + pageSize) - 1) / pageSize;


return totalPageCount;
}


/**
* 分页显示数据.
* @param currentPage 当前页码, 从 1 开始
* @param pageSize 每页显示数据量
* @return 分页后的数据列表 - List<Student>
*/
public List findPagedAll(String HQL, int currentPage, int pageSize) {
System.out.println(currentPage+"分页到了findpage");
Session session = null;
Transaction tran = null;
List pageList = new ArrayList();
try {


if (currentPage == 0) {
currentPage = 1;
}
//操作之前,打开 Session
session = getSession();
//开启事务
tran = session.beginTransaction();
//执行事务处理
String hql =  HQL ;
Query query = session.createQuery(hql);
query.setFirstResult((currentPage - 1) * pageSize);
query.setMaxResults(pageSize);
pageList = query.list();

//提交事务
tran.commit();

} catch (Exception e) {
//如果出现异常,就撤销事务
if(tran != null)
tran.rollback();
e.printStackTrace();
} finally {
//不管事务执行成功与否,最后都关闭Session
session.close();
}
return pageList;
}


/**
     * 得到总记录数
     * @return 指定表中的记录总数
     */
public int getTotalCount(String  HQL) {
Session session = null;
Transaction tran = null;
List stuList = new ArrayList();
try {
//操作之前,打开 Session
session = getSession();

//开启事务
tran = session.beginTransaction();

//执行事务处理
String hql =  HQL ;
Query query = session.createQuery(hql);
stuList = query.list();
//提交事务
tran.commit();
} catch (Exception e) {
//如果出现异常,就撤销事务
if(tran != null)
tran.rollback();
e.printStackTrace();
} finally {
//不管事务执行成功与否,最后都关闭Session
session.close();
}
return stuList.size();
}


}

0 0
原创粉丝点击