- 浏览: 200918 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
RonQi:
受博文启发,自己实现了下
/**
* <pre&g ...
关于根据出生日期计算年龄的问题(js,java) -
ibad_boys:
实践证明,可用!
java 通过sftp服务器上传下载删除文件 -
accphc:
/**
* 计算年龄
* @param birth ...
关于根据出生日期计算年龄的问题(js,java) -
小迹_:
生日获取月份时为什么不+1?
关于根据出生日期计算年龄的问题(js,java) -
桃花源记:
正在找这个!
字母校验码
以下内容省去了有关service在spring配置文件中代码以及service Interface类,只写了service的实现类
1、用于分页查询的Action在struts配置文件中的代码片段:
<action name="adminAction" class="ssh.web.action.comm.AdminAction" method="query">
<result name="success">/main/webapp/query/queryResult.jsp</result>
</action>
2、Action的代码:
package ssh.web.action.comm;
//管理员action实现类
import java.util.List;
import ssh.comm.AdminService;
import ssh.comm.Page;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings({ "unchecked", "serial" })
public class AdminAction extends ActionSupport {
//查看管理员
private int pno; //查看的表单页数
private AdminService adminService;
private Page myPage;
private List mylist;
private String stuName; //传递的用户名
public String query() {
System.out.println("stuName= "+ stuName +" pno= "+pno);
if (pno == 0 ) {
pno = 1;
}
adminService.init(pno);
myPage = adminService.getPage();
// mylist = adminService.getPage().getList();
return SUCCESS;
}
public int getPno() {
return pno;
}
public void setPno(int pno) {
this.pno = pno;
}
public AdminService getAdminService() {
return adminService;
}
public void setAdminService(AdminService adminService) {
this.adminService = adminService;
}
public Page getMyPage() {
return myPage;
}
public void setMyPage(Page myPage) {
this.myPage = myPage;
}
public List getMylist() {
return mylist;
}
public void setMylist(List mylist) {
this.mylist = mylist;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
}
3、adminService的实现类
package ssh.comm.impl;
import ssh.comm.AdminService;
import ssh.comm.Page;
import ssh.comm.PageDao;
public class AdminServiceImpl implements AdminService{
private PageDao pageDao;
public Page getPage() {
return pageDao.getPage();
}
public void init(int pno) {
String tableName="Student";
pageDao.init(pno, tableName);
}
public PageDao getPageDao() {
return pageDao;
}
public void setPageDao(PageDao pageDao) {
this.pageDao = pageDao;
}
}
4、pageDao的实现类
package ssh.comm.impl;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import ssh.comm.Page;
import ssh.comm.PageDao;
public class PageDaoImpl extends HibernateDaoSupport implements PageDao{
private String hql;
public Page page;
public int start;
public void init(int start,String tableName){
page = new Page();
this.hql = "from "+tableName;
this.start = start;
setRowCount(); //设置page的总数量
setTotalPage(); //设置page的总页数
setCurrentPage(); //设置page的当前页
setPrePage(); //设置page的上一页
setNextPage(); //设置page的下一页
setPreOrNextBoolean(); //判断page是否有上一页或下一页
}
@SuppressWarnings("unchecked")
public Page getPage(){
List list = (List)getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(getStartIndex());
query.setMaxResults(page.getPageSize());
return query.list();
}
});
page.setList(list);
return page;
}
/**获得数据的总数量*/
@SuppressWarnings("unchecked")
public int getRowCount(){
List list = (List)getHibernateTemplate().find(hql);
if(list.isEmpty()){
return 0;
}
return list.size();
}
/**
* 判断是否有下一页
* */
public void setPreOrNextBoolean() {
if (page.getCurrentPage() <= 1) {
page.setHasPreviousPage(false);
} else {
page.setHasPreviousPage(true);
}
if (page.getCurrentPage() >= page.getTotalPage()) {
page.setHasNextPage(false);
} else {
page.setHasNextPage(true);
}
}
/**
* 设置当前查询页
* */
public void setCurrentPage() {
if (start < 1) {
page.setCurrentPage(1);
}
else if (start > page.getTotalPage()) {
page.setCurrentPage(page.getTotalPage());
}
else {
page.setCurrentPage(start);
}
}
/**
* 设置上一页的页数
* */
public void setPrePage() {
page.setPrePage(page.getCurrentPage() - 1);
}
/**
* 设置下一页的页数
* */
public void setNextPage() {
page.setNextPage(page.getCurrentPage() + 1);
}
/**
* 计算总页数
* */
public void setTotalPage() {
int rowCount = getRowCount();
int pageSize = page.getPageSize();
if (rowCount > pageSize) {
if (rowCount % pageSize == 0) {
page.setTotalPage(rowCount / pageSize);
} else {
page.setTotalPage(1 + (rowCount / pageSize));
}
} else {
page.setTotalPage(1);
}
}
public void setRowCount() {
page.setRowCount(getRowCount());
}
/**
* 设置查询数据的起始位置
* */
public int getStartIndex() {
int startIndex = 0;
if (start < 0) {
startIndex = 0;
} else {
if (start > page.getTotalPage()) {
startIndex = page.getPageSize() * (page.getTotalPage() - 1);
} else {
startIndex = page.getPageSize() * (start - 1);
}
}
return startIndex;
}
}
5、Page类对象
package ssh.comm;
import java.io.Serializable;
import java.util.List;
public class Page implements Serializable{
private static final long serialVersionUID = -7129370623545540245L;
private int pageSize; //每页的数量
private int totalPage; //总页数
private int rowCount; //总数量
private int currentPage; //当前页数
private int prePage; //上一页
private int nextPage; //下一页
private boolean hasNextPage; //是否有下一页
private boolean hasPreviousPage; //是否有下一页
@SuppressWarnings("unchecked")
private List list; //返回的数据
public Page() {
this.pageSize=6;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPrePage() {
return prePage;
}
public void setPrePage(int prePage) {
this.prePage = prePage;
}
public int getNextPage() {
return nextPage;
}
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
@SuppressWarnings("unchecked")
public List getList() {
return list;
}
@SuppressWarnings("unchecked")
public void setList(List list) {
this.list = list;
}
}
6、展示数据的jsp文件
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<html>
<head>
<script src="/s2sh/main/webapp/res/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<link type="text/css" rel="stylesheet" href="/s2sh/main/webapp/css/editTable.css" />
<script type="text/javascript" src="/s2sh/main/webapp/query/editTable.js"></script>
<title>查询结果页面</title>
</head>
<body>
查询结果<br>
<table >
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>出生年月</th>
<th>家庭住址</th>
</tr>
</thead>
<tbody>
<c:forEach items="${myPage.list}" var="student" >
<tr>
<td align="center">${student.stuId}</td>
<td align="center">${student.stuName}</td>
<td align="center">${student.stuSex}</td>
<td align="center">${student.stuBir }</td>
<td align="center">${student.stuAdd }</td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr>
<td colspan="6">
<div class="message" > </div>
<div class="pagebar list_page">
共<span class="rowCount"> ${myPage.rowCount} </span>条
<span class="currentPage">${myPage.currentPage} </span>/<span class="totalPage"> ${myPage.totalPage} </span>
<a class="firstPage" href="/s2sh/student/adminAction.action?pno=1">首页</a>
<a class="prePage" href="/s2sh/student/adminAction.action?pno=${myPage.prePage}" >上一页</a>
<a class="nextPage" href="/s2sh/student/adminAction.action?pno=${myPage.nextPage}" >下一页</a>
<a class="lastPage" href="/s2sh/student/adminAction.action?pno=${myPage.totalPage}">尾页</a>
跳转到第 <input type="text" class="currentPage inputW20" /> 页 <input type="hidden" class="pageSize"></input>
</div>
</td>
</tr>
</tfoot>
</table>
</body>
</html>
1、用于分页查询的Action在struts配置文件中的代码片段:
<action name="adminAction" class="ssh.web.action.comm.AdminAction" method="query">
<result name="success">/main/webapp/query/queryResult.jsp</result>
</action>
2、Action的代码:
package ssh.web.action.comm;
//管理员action实现类
import java.util.List;
import ssh.comm.AdminService;
import ssh.comm.Page;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings({ "unchecked", "serial" })
public class AdminAction extends ActionSupport {
//查看管理员
private int pno; //查看的表单页数
private AdminService adminService;
private Page myPage;
private List mylist;
private String stuName; //传递的用户名
public String query() {
System.out.println("stuName= "+ stuName +" pno= "+pno);
if (pno == 0 ) {
pno = 1;
}
adminService.init(pno);
myPage = adminService.getPage();
// mylist = adminService.getPage().getList();
return SUCCESS;
}
public int getPno() {
return pno;
}
public void setPno(int pno) {
this.pno = pno;
}
public AdminService getAdminService() {
return adminService;
}
public void setAdminService(AdminService adminService) {
this.adminService = adminService;
}
public Page getMyPage() {
return myPage;
}
public void setMyPage(Page myPage) {
this.myPage = myPage;
}
public List getMylist() {
return mylist;
}
public void setMylist(List mylist) {
this.mylist = mylist;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
}
3、adminService的实现类
package ssh.comm.impl;
import ssh.comm.AdminService;
import ssh.comm.Page;
import ssh.comm.PageDao;
public class AdminServiceImpl implements AdminService{
private PageDao pageDao;
public Page getPage() {
return pageDao.getPage();
}
public void init(int pno) {
String tableName="Student";
pageDao.init(pno, tableName);
}
public PageDao getPageDao() {
return pageDao;
}
public void setPageDao(PageDao pageDao) {
this.pageDao = pageDao;
}
}
4、pageDao的实现类
package ssh.comm.impl;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import ssh.comm.Page;
import ssh.comm.PageDao;
public class PageDaoImpl extends HibernateDaoSupport implements PageDao{
private String hql;
public Page page;
public int start;
public void init(int start,String tableName){
page = new Page();
this.hql = "from "+tableName;
this.start = start;
setRowCount(); //设置page的总数量
setTotalPage(); //设置page的总页数
setCurrentPage(); //设置page的当前页
setPrePage(); //设置page的上一页
setNextPage(); //设置page的下一页
setPreOrNextBoolean(); //判断page是否有上一页或下一页
}
@SuppressWarnings("unchecked")
public Page getPage(){
List list = (List)getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(getStartIndex());
query.setMaxResults(page.getPageSize());
return query.list();
}
});
page.setList(list);
return page;
}
/**获得数据的总数量*/
@SuppressWarnings("unchecked")
public int getRowCount(){
List list = (List)getHibernateTemplate().find(hql);
if(list.isEmpty()){
return 0;
}
return list.size();
}
/**
* 判断是否有下一页
* */
public void setPreOrNextBoolean() {
if (page.getCurrentPage() <= 1) {
page.setHasPreviousPage(false);
} else {
page.setHasPreviousPage(true);
}
if (page.getCurrentPage() >= page.getTotalPage()) {
page.setHasNextPage(false);
} else {
page.setHasNextPage(true);
}
}
/**
* 设置当前查询页
* */
public void setCurrentPage() {
if (start < 1) {
page.setCurrentPage(1);
}
else if (start > page.getTotalPage()) {
page.setCurrentPage(page.getTotalPage());
}
else {
page.setCurrentPage(start);
}
}
/**
* 设置上一页的页数
* */
public void setPrePage() {
page.setPrePage(page.getCurrentPage() - 1);
}
/**
* 设置下一页的页数
* */
public void setNextPage() {
page.setNextPage(page.getCurrentPage() + 1);
}
/**
* 计算总页数
* */
public void setTotalPage() {
int rowCount = getRowCount();
int pageSize = page.getPageSize();
if (rowCount > pageSize) {
if (rowCount % pageSize == 0) {
page.setTotalPage(rowCount / pageSize);
} else {
page.setTotalPage(1 + (rowCount / pageSize));
}
} else {
page.setTotalPage(1);
}
}
public void setRowCount() {
page.setRowCount(getRowCount());
}
/**
* 设置查询数据的起始位置
* */
public int getStartIndex() {
int startIndex = 0;
if (start < 0) {
startIndex = 0;
} else {
if (start > page.getTotalPage()) {
startIndex = page.getPageSize() * (page.getTotalPage() - 1);
} else {
startIndex = page.getPageSize() * (start - 1);
}
}
return startIndex;
}
}
5、Page类对象
package ssh.comm;
import java.io.Serializable;
import java.util.List;
public class Page implements Serializable{
private static final long serialVersionUID = -7129370623545540245L;
private int pageSize; //每页的数量
private int totalPage; //总页数
private int rowCount; //总数量
private int currentPage; //当前页数
private int prePage; //上一页
private int nextPage; //下一页
private boolean hasNextPage; //是否有下一页
private boolean hasPreviousPage; //是否有下一页
@SuppressWarnings("unchecked")
private List list; //返回的数据
public Page() {
this.pageSize=6;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPrePage() {
return prePage;
}
public void setPrePage(int prePage) {
this.prePage = prePage;
}
public int getNextPage() {
return nextPage;
}
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
@SuppressWarnings("unchecked")
public List getList() {
return list;
}
@SuppressWarnings("unchecked")
public void setList(List list) {
this.list = list;
}
}
6、展示数据的jsp文件
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<html>
<head>
<script src="/s2sh/main/webapp/res/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<link type="text/css" rel="stylesheet" href="/s2sh/main/webapp/css/editTable.css" />
<script type="text/javascript" src="/s2sh/main/webapp/query/editTable.js"></script>
<title>查询结果页面</title>
</head>
<body>
查询结果<br>
<table >
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>出生年月</th>
<th>家庭住址</th>
</tr>
</thead>
<tbody>
<c:forEach items="${myPage.list}" var="student" >
<tr>
<td align="center">${student.stuId}</td>
<td align="center">${student.stuName}</td>
<td align="center">${student.stuSex}</td>
<td align="center">${student.stuBir }</td>
<td align="center">${student.stuAdd }</td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr>
<td colspan="6">
<div class="message" > </div>
<div class="pagebar list_page">
共<span class="rowCount"> ${myPage.rowCount} </span>条
<span class="currentPage">${myPage.currentPage} </span>/<span class="totalPage"> ${myPage.totalPage} </span>
<a class="firstPage" href="/s2sh/student/adminAction.action?pno=1">首页</a>
<a class="prePage" href="/s2sh/student/adminAction.action?pno=${myPage.prePage}" >上一页</a>
<a class="nextPage" href="/s2sh/student/adminAction.action?pno=${myPage.nextPage}" >下一页</a>
<a class="lastPage" href="/s2sh/student/adminAction.action?pno=${myPage.totalPage}">尾页</a>
跳转到第 <input type="text" class="currentPage inputW20" /> 页 <input type="hidden" class="pageSize"></input>
</div>
</td>
</tr>
</tfoot>
</table>
</body>
</html>
发表评论
-
spring security2配置文件学习小结
2015-09-02 15:13 702内容 转自 spring security2配置文件学习小结 ... -
Spring定时器 小例子
2013-12-02 16:15 902spring配置文件servicegateway-quartz ... -
spring security2配置
2013-07-05 17:04 1590下面的内容也是在网上 ... -
Spring+Hibernate+Jpa+Struts2整合实例
2013-03-20 14:21 54811、首先引入进去所需要用到的jar包(内容见附件) 2、工程 ... -
Ant自动打包配置
2013-03-19 16:54 1269<?xml version="1.0" ... -
struts2登陆拦截器
2013-03-18 15:22 15701、拦截器代码如下: package ssh.securit ... -
字母校验码
2013-03-18 11:37 25541、jsp中队校验码的引用代码片段如下: <tr> ... -
AJAX请求及json对象封装小demo
2013-03-15 11:03 4615js中的ajax请求方法 function query(){ ... -
关于根据出生日期计算年龄的问题(js,java)
2013-03-14 10:36 30068js中计算年龄 /** * 将生日转换成年龄 */ fun ...
相关推荐
在探讨Struts2框架下的增删改查以及分页查询功能时,我们首先需要理解Struts2框架本身。Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了大量的改进和扩展,提供了...
用Struts2+mysql实现的简单信息录入,分页查询
Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...
以上就是关于Struts2框架进行增删改查和分页查询的主要知识点,包括页面设计、表单提交、URL构造、配置文件和Action类的设计等方面。理解并熟练掌握这些内容对于开发基于Struts2的Web应用至关重要。
本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...
为了实现分页功能,我们需要在Struts2中定义Action类来接收用户的翻页请求,并通过Hibernate进行数据查询。具体步骤如下: 1. **定义PageTool类** 在Struts2中,我们通常会定义一个PageTool类来封装分页所需的信息...
- 在Struts2中,Action类的属性可以用来接收前端传递的页码和每页大小,然后在Action中调用Hibernate的方法进行分页查询。 4. **前端展示**: - 前端页面通常使用JSP(JavaServer Pages)或者现代的前端框架(如...
该文档详细描述了struts2版本的分页显示,值得一读
本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...
**Struts2分页查询** Struts2提供了ActionSupport类,可以方便地实现分页功能。通过设置start(开始位置)和limit(每页条数)属性,可以实现对数据的分页展示。通常,需要在Action类中定义这两个属性,并在JSP页面...
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
在提供的"InterlibLog"文件中,可能包含了实现这个分页功能的具体代码示例,包括Action类、数据库查询逻辑、Struts2配置文件以及对应的JSP页面。通过分析和学习这些代码,你可以更深入地理解Struts2的分页实现过程。...
MyBatis增 删 改 查 struts2分页
经典Struts2分页方法是Java Web开发者需要掌握的核心技能之一。 分页的实现通常涉及到以下几个关键知识点: 1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含...
### Struts2 实现分页及 `<s:bean>` 标签详解 #### 一、Struts2 分页概述 在 Java Web 开发中,为了提高用户体验并减轻服务器负担,通常采用分页技术来展示数据。Struts2 框架提供了一套强大的工具和标签库来帮助...
这个“struts分页,数据查询资料”可能包含了如何在Struts框架下实现高效、灵活的分页查询方法。 首先,Struts框架的核心是Action类,它是业务逻辑和视图之间的桥梁。在实现分页功能时,我们需要创建一个Action类,...
在这个"Struts带分页有查询"的项目中,开发者利用Struts框架实现了带有分页功能的查询功能,使得用户能够方便地浏览大量数据而无需一次性加载所有结果,提升了用户体验。 分页是Web应用中常用的一种数据展示方式,...
Struts2实现分页功能,代码完整简洁易懂,可以直接拿去使用,欢迎拍砖
这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习
Struts2分页是Web开发中的一个重要概念,它主要用于处理大量数据时,避免一次性加载所有数据导致页面响应慢或者浏览器崩溃。在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户...