第一步:前台页面(核心代码)
主要是当前的页数,因为是第一次嘛,肯定是从第一页开始的。查询出来的页面我用的是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%"
οnlοad="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;
}