第一步:前台页面(核心代码)
主要是当前的页数,因为是第一次嘛,肯定是从第一页开始的。查询出来的页面我用的是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用java实现Oracle的数据库连接,并实现页面的分页设计
MVC做的教程与源代码 里面有MVC用于分页的实现(PagedList, GridViewExtensions等等类),以及相关控件的使用方法等。 方便您学习参考. 对应的版本是MVC Beta版
在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示...
用word自带的工具将大word文件分页,批量制作小的word文件,将一个word文档分为若干个
实现分页功能是各个页面显示的内容数量一样
于大家分享一个基于JSP代码的数据库分页程序代码,帮助JSP初学者了解数据库的分页原理以及具体的代码实现步骤,这个代码比较早了,不过现在仍然有一定参考作用,本代码是一个完整的JSP分页演示文件,从数据库连接...
Spring,Spring Data Jpa,freemarker,bootstrap实现的分页源代码
1、首先写一个Model分页模型MvcPagerInfo.cs(可放入AppCode中) 2、在控制器公用方法中添加分页方法BaseController.cs 3、写一个一般处理程序Pager.ascx 4、分页模板 _Pager.cshtml(View/Shared中) 5、View视图以后...
在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示...
聚合查询分页测试termsAgg.size(2147483647); //指定最大统计显示多少行步骤1:全量聚合,size设置为: 2147483647。 ES5.X/6.X版本设置为2147483647 ,它等于2^31-1,请看该地方代码
Hibernate+Struts+Spring 实现的通用分页查询,非常实用的。步骤和代码都有,很详细。
本文介绍了servlet分页代码实现,采用Oracle数据库,获取SCOTT用户EMP表中的数据,分页实现步骤看下面代码
最近看到很多的网站都是用了数字分页效果,至于它的好处太多了,举不胜举啊,下面简单介绍一下实现的步骤:使用浮动属性,以便让li元素水平排列...感兴趣的你可不要错过了哈,或许本文所提供的效果正是你一直寻找的
自己做网站时对gridview分页的总结,含gridview分页的具体代码及步骤。
SSH分页步骤 七、 接着就是jsp页面了 ${msg }">首页 href="getConsultationAUser.do?index=prew&pageno=${page.currentPage -1}&msg=${msg }">上一页 ...
主要介绍了基于Bootstrap仿淘宝分页控件实现代码,本文分步骤给大家介绍的非常详细,感兴趣的朋友参考下吧
我虽然已经有多年不写代码了,但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令,对系统的每个部分都了如指掌。 黑客(hacker)实际是褒义词,维基百科的解释是...
我在一些PHP论坛上经常看到不少PHP初学者对于PHP分页很头痛,所以我就抽一点时间将我所写的网站中 的分页功能给分离出来给广大PHP初学者做为参考或者使用。 程序的演示效果您可以登录到淘宝网寻宝客...
1.mapper文件:在原先生成的mapper文件中加入分页查询,条件查询,条件统计.并且自动生成oracle/mysql分页sql(仅支持) 2.dao: 自使用生成接口方法,若继承超类,则有超类抽象实现. 3.service:生成spring标准的service源码...
本文实例为大家分享了JSP实现分页的具体代码,供大家参考,具体内容如下 咱们在浏览网页的时候,当一个页面的数据不足以展示完全所有的内容,一般都涉及到分页,下一页的功能该怎么实现呢?首先我们来分析一下: ...