上一章 下一章
目录
(2)实现业务层
1. 编写发送 Ajax 分页请求的 getpagi() 方法并进行调用,以便在首页加载时初始
2.编写回调方法 pagi() 处理响应,主要完成两件事:展示本页数据和生成分页操作链接。
3. 为 index.jsp 页面中的主题超链添加单击事件,单击以 Ajax 方式实现按主题
(6)部署运行并测试
系统首页新闻中心部分使用 Ajax 技术按主题动态显示新闻功能,根据条件加载
全部主题或某个主题下得新闻,并使用 Ajax 技术实现分页显示。使用 Ajax 技术加载
添加主题页面,并以 Ajax 方式实现添加主题功能,以及用 Ajax 技术实现主题的修改
和删除。
8.2.1 以 Ajax 方式根据主题动态加载新闻
1. 需求介绍
访问系统首页,以 Ajax 方式加载页面 "新闻中心" 部分的新闻列表,默认加载所有
主题下得新闻,按创建时间降序排列,并实现分页,如图 8.1 所示。
单击某个主题的超链接时,以 Ajax 方式加载该主题下得新闻,按创建时间降序排列,
并实现分页。
2.实现思路
(1)实现数据层访问
需求中存在两个分页查询的要求:对所有主题下的新闻进行分页查询,以及对某个
主题下得新闻进行分页查询。实际上,这两个查询对于 SQL 语句而言,仅相差一个主
题 id 的查询。实际上,这两个查询对于 SQL 语句而言,仅相差一个主题 id 的查询条件,
故而考虑将两个查询进行整合设计。
图 8.1 分页展示全部类别的新闻
修改 NewsDao 接口中分页查询相关方法的设计,加入主题 id 参数。
public interface NewsDao {
……// 省略其他方法
//获得新闻总数
public int getTotalCount(Integer id) throws SQLException;
//分页获得新闻
public List<News> getPageNewsList(Integer tid,
int pageNo,int pageSize) throws SQLException;
}
在其实现类 NewsDaoImpl 中根据传入参数 tid 是否有效,动态拼装 SQL 语句和查
询条件。
public class NewsDaoImpl extends BaseDao implements NewsDao{
public NewsDaoImpl(Connection conn){
super(conn);
}
……//省略其他方法
//获得新闻的数量
public int getTotalCount(Integer tid) throws SQLEception{
ResultSet rs = null:
List<Object> params = new ArrayList <Object>();
String sql = "SELECT COUNT('nid') FROM 'news'";
if(tid!= null){
sql += "WHERE 'ntid' = ?";
params.add(tid);
}
int count = -1;
try {
rs = this.executeQuery(sql,params.toArrary()) ;
rs.next();
count = rs.getInt(1);
}……省略异常处理和资源释放代码
return count;
}
//分页获得新闻
public List<News> getPageNewsList(Integer tid,
int pageNo,int pageSize) throws SQLException{
List<News> list = new ArrayList <News>();
ResultSet rs = null;
List<Object> params = new ArrayList <Object>();
String sql = "SELECT'nid','ntid','ntitle','nauthor',"
+"'ncreateDate','nsummary','tname' FROM 'NEWS',"
+"'TOPIC''WHERE''NEWS'.'NTID' = 'TOPIC'.'tid'";
if{tid! = null){
sql &#