第一步:前台页面(核心代码)
主要是当前的页数,因为是第一次嘛,肯定是从第一页开始的。查询出来的页面我用的是iframe方式呈现。其他地方的代码不用啰嗦,该怎么写怎么写。
<form name="advertiseForm" id="advertiseForm" action="modules/advertisement/AdvertiseManageAction.do?action=searchAdvertise" method="POST" target="advertiseList">
<input type="hidden" name="currentPage" id="currentPage" value="1" />
<!-- 此处省略 -->
<iframe style="padding-top: 0px;" name="advertiseList" id="advertiseList"
src="" frameBorder="0" width="100%"
onload="javascript:this.height=advertiseList.document.body.scrollHeight"
scrolling="no"></iframe>
第二步:actionForm代码
actionForm里面的字段名称和前台页面要保存一直,学过struts的同学应该明白自动填充的含义。
package com.feinar.b2c.holiday.advertise.form;
import org.apache.struts.action.ActionForm;
/**
* 查询广告管理用到的formBean
* @author Administrator
*
*/
public class AdvertiseSearchForm extends ActionForm{
public String advertiseName;//广告名称
public int advertiseState;//广告状态
public int advertiseType;//发布区域
public String currentPage;//当前第几页
public String getAdvertiseName() {
return advertiseName;
}
public void setAdvertiseName(String advertiseName) {
this.advertiseName = advertiseName;
}
public int getAdvertiseState() {
return advertiseState;
}
public void setAdvertiseState(int advertiseState) {
this.advertiseState = advertiseState;
}
public int getAdvertiseType() {
return advertiseType;
}
public void setAdvertiseType(int advertiseType) {
this.advertiseType = advertiseType;
}
public String getCurrentPage() {
return currentPage;
}
public void setCurrentPage(String currentPage) {
this.currentPage = currentPage;
}
}
第三步:action代码
/**
* 查询广告
* @param mapping
* @param actionForm
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward search(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
AdvertiseSearchForm advertiseSearchForm = (AdvertiseSearchForm) actionForm;
String action = request.getParameter("action");
int pageSize = 5;//默认每页显示的数量为10条
System.out.println(action);
List list = advertiseManageService.getAdvertiseList(advertiseSearchForm,pageSize);//获取对应的数据列表
List list2 = advertiseManageService.getTotalCount(advertiseSearchForm,pageSize);//获取关于多少页,每页几条数据,一共多少页
request.setAttribute("list", list);
request.setAttribute("list2", list2);
request.setAttribute("advertiseSearchForm", advertiseSearchForm);
return mapping.findForward("list");
}
第四步:service业务逻辑层核心代码
/**
* 获取广告列表
*/
public List getAdvertiseList(AdvertiseSearchForm advertiseSearchForm,int pageSize)
throws Exception {
// TODO Auto-generated method stub
List list = null;
int currentPage = Integer.parseInt(advertiseSearchForm.getCurrentPage());
int index = (currentPage-1)*pageSize;
int end = currentPage*pageSize;
try{
String sql = getSql(advertiseSearchForm,2,index,end);
list = advertiseManageDao.getAdvertiseList(sql);
}catch (Exception e) {
throw new Exception(e.getMessage().toString());
}
return list;
}
/**
* 得到查询的数据库sql语句
* @param advertiseSearchForm
* @param type
* @param index
* @param end
* @return
*/
public String getSql(AdvertiseSearchForm advertiseSearchForm,int type,int index,int end){
String sqlwhere = " where 1=1 ";
String sql = "";
if(type==1){
//获取评论总条数
sql= "select count(*) from HOLIDAY_ADVERTISEMENT";
}
else if(type==2){
//获取评论信息内容
sql = "select * from (select ADVERTISEID,ADVERTISENAME,PIC,LINKURL,HOTELADDNUM,HOLIDAYADDNUM,HOLIDAYTYPEADDNUM,PUBLISHSTATE,rownum n " +
"from HOLIDAY_ADVERTISEMENT ";
}
if(advertiseSearchForm.getAdvertiseName()!=null && !"".equals(advertiseSearchForm.getAdvertiseName().trim())){
sqlwhere += " and ADVERTISENAME = '"+advertiseSearchForm.getAdvertiseName().trim()+"'";
}
if(advertiseSearchForm.getAdvertiseType()==1){
sqlwhere += " and HOTELADDNUM is not null ";
}
if(advertiseSearchForm.getAdvertiseType()==2){
sqlwhere += " and HOLIDAYADDNUM is not null ";
}
if(advertiseSearchForm.getAdvertiseType()==3){
sqlwhere += " and HOLIDAYTYPEADDNUM is not null ";
}
if(advertiseSearchForm.getAdvertiseState()==0){
sqlwhere += " and PUBLISHSTATE = 0 ";
}
if(advertiseSearchForm.getAdvertiseState()==1){
sqlwhere += " and PUBLISHSTATE = 1 ";
}
if(advertiseSearchForm.getAdvertiseState()==2){
sqlwhere += " and PUBLISHSTATE = 2 ";
}
if(type==2){
sql += sqlwhere+" and rownum<="+end +" order by ADVERTISEID asc) where n>"+index;
}else {
sql += sqlwhere;
}
return sql;
}
/**
* 获取总共的条数,和页数,保存到一个list里面
*/
public List getTotalCount(AdvertiseSearchForm advertiseSearchForm,int pageSize) throws Exception {
// TODO Auto-generated method stub
int count = 0;
int currentPage = Integer.parseInt(advertiseSearchForm.getCurrentPage());
int pageCount = 0;//总共的页数
List list = new ArrayList();
try{
String sql = getSql(advertiseSearchForm,1,0,0);
count = advertiseManageDao.getTotalCount(sql);
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
list.add(count);
list.add(pageCount);
list.add(advertiseSearchForm.getCurrentPage());
}catch (Exception e) {
throw new Exception(e.getMessage().toString());
}
return list;
}
第五步:dao层组件代码
/**
* 获取某广告信息列表
*/
public List getAdvertiseList(String sql) throws Exception {
// TODO Auto-generated method stub
List list = new ArrayList();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try{
connection = this.getJdbcTemplate().getDataSource().getConnection();
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
Advertisement advertisement = new Advertisement();
advertisement.setAdvertiseid(resultSet.getLong("ADVERTISEID"));
advertisement.setAdvertisename(resultSet.getString("ADVERTISENAME"));
advertisement.setPic(resultSet.getBlob("PIC"));
advertisement.setLinkurl(resultSet.getString("LINKURL"));
advertisement.setHoteladdnum(resultSet.getLong("HOTELADDNUM"));
advertisement.setHolidayaddnum(resultSet.getLong("HOLIDAYADDNUM"));
advertisement.setHolidaytypeaddnum(resultSet.getLong("HOLIDAYTYPEADDNUM"));
advertisement.setPublishstate(resultSet.getLong("PUBLISHSTATE"));
list.add(advertisement);
}
}catch (Exception e) {
e.printStackTrace();
}finally{
if(resultSet!=null){
resultSet.close();
}
if(preparedStatement!=null){
preparedStatement.close();
}
if(connection!=null){
connection.close();
}
}
return list;
}
/**
* 获取满足要求的广告总记录数(用于查询分页)
*/
public int getTotalCount(String sql) throws Exception {
// TODO Auto-generated method stub
int totalCount = 0;
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try{
connection = this.getJdbcTemplate().getDataSource().getConnection();
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
totalCount = resultSet.getInt(1);
}
}catch (Exception e) {
e.printStackTrace();
}finally{
if(resultSet!=null){
resultSet.close();
}
if(preparedStatement!=null){
preparedStatement.close();
}
if(connection!=null){
connection.close();
}
}
return totalCount;
}
分享到:
相关推荐
【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...
总的来说,"c# 自己写的分页代码"项目涵盖了C#后端处理分页逻辑、数据库查询、前端展示和用户体验等多个方面,是学习和实践C#分页功能的好素材。通过对这个项目的分析和学习,开发者可以更好地理解和掌握C#环境下...
三、Android SQLite分页查询步骤 1. **创建数据库和表** 首先,你需要创建一个SQLiteOpenHelper子类,用于管理数据库的创建和版本升级。在onCreate()方法中,编写SQL语句创建表,例如: ```java @Override public ...
分页查询主要涉及以下几个步骤: 1. **建立数据库连接**:使用JDBC(Java Database Connectivity)来连接数据库。 2. **编写SQL语句**:根据当前页码和每页显示的数据量来动态生成SQL语句。 3. **执行SQL语句**:...
针对数据量较大的场景,本文介绍的多线程分页查询方案主要包含以下几个步骤: - **步骤1:计算总记录数**。首先通过执行一个统计查询语句获取总的记录数,为后续的分页提供依据。 - **步骤2:设置页面信息**。根据...
通过学习和理解这个代码,开发者可以快速地在自己的项目中应用分页功能,提高网页的性能和用户体验。如果你对ASP编程或分页技术不熟悉,建议仔细阅读提供的说明文档,并尝试运行和调试代码以加深理解。
提供的代码片段中展示了`KindEntityDao`接口的部分定义,其中包括了获取单个实体、保存、更新、删除以及分页查询等功能。 3. **DAO实现** `KindEntityDaoHibernate`类实现了`KindEntityDao`接口,并使用Hibernate...
通过JDBC用java实现Oracle的数据库连接,并实现页面的分页设计
问题在于,当你在使用MybatisPlus进行分页查询时,如果未正确配置PaginationInterceptor,分页参数将无法生效,你会观察到所有的数据都被查询出来。要解决这个问题,你需要在你的项目配置中添加...
然后,在控制器中,你可以使用`PagedListPager`辅助方法创建分页链接,同时使用`ToPagedList`方法将查询结果转换为`PagedList`对象。以下是一个简单的例子: ```csharp public ActionResult Index(int? page) { ...
通过以上步骤,我们可以实现基于ListView和ArrayAdapter的分页查询。这不仅提高了应用性能,还能提供良好的用户体验。在实际项目中,还可以根据需求进一步优化,例如集成Paging Library,实现更智能的分页加载策略。
### Word文档分页步骤与VBA代码详解 #### 一、背景介绍 在处理大量Word文档时,常常需要将一个大型文档分割成多个较小的文档,以便于管理和发送。Word本身提供了一些工具来帮助实现这一目标,而通过使用VBA(Visual...
在分页查询中,我们通常需要以下几个步骤: 1. **请求处理**:当用户点击页面链接或提交表单时,Servlet捕获HTTP请求,通常包含页码和每页显示条数等参数。 2. **计算页数**:Servlet根据数据库中的总记录数和每页...
### PHP分页功能详解与实现 ...通过以上分析,我们可以看到PHP分页技术的核心在于合理地控制查询和展示的数据量,同时还需要考虑用户体验和代码的安全性。希望本篇文章能够帮助大家更好地理解和运用PHP分页技术。
在IT行业中,分页查询是一种常见的数据管理策略,特别是在处理大量数据时,它能有效提高网页或应用的加载速度和用户体验。"SSH分页查询方法"是指在使用Struts2、Hibernate和Spring三大Java开发框架集成开发时实现的...
- 虽然示例代码中没有完整展示分页逻辑,但从变量命名和注释中可以看出,主要涉及到的内容包括:确定每页显示多少内容、如何根据当前页数显示内容、如何生成分页导航等。 ### 五、扩展知识点 除了基本的分页功能...
2. **SQL查询**:根据分页需求,编写SQL查询语句。通常,查询会包含`LIMIT`和`OFFSET`子句,`LIMIT`用于指定每页显示的数据数量,`OFFSET`则根据当前页数计算出跳过多少条记录。例如: ```sql SELECT * FROM table...
### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...
"mybatis 分页自己写的一个分页"这个项目正是针对这一需求,提供了一种自定义的分页解决方案。MyBatis作为一款轻量级的Java持久层框架,它允许开发者自由地编写SQL语句,同时也支持自定义分页策略。 在传统的物理...
在实际应用中,实现大数据量多线程分页查询的过程可能包括以下几个步骤: 1. **设计数据库表结构**:根据需求创建合适的表结构,合理利用索引以优化查询性能。 2. **实现分页查询**:使用SQL的`LIMIT`(MySQL)或`...