`
鬼眼小菜刀
  • 浏览: 40830 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

用MVC模式实现真分页

    博客分类:
  • java
阅读更多

·我们在之前代码上实现一个搜索框

输入查询关键字:<input type="text" name="kw" value="<%=keyWord.equals("null")?"":keyWord%>"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<input type="submit" value="查询">

在这段代码中,我们将value值用一个判断语句写出,是为了在下一页是,搜索框的内容被保存下来。

·为了实现分页组件的重用,我们将分页显示的,翻页按钮和搜索框封装成一个jsp页面,并设置一个status值,当值为searchAllsearchLike时,分别表示,搜索全部的值和关键字搜索,即split_page.jsp

其中要注意的是:在查询的结果集为空时,应该不显示上一页下一页按钮,否则点击会出错,在这里,我们用总记录数allRecorders来判断(具体代码见附件)。

·至于数据库操作和实体的分装,我们分别用DAOjavaBean实现,设计DataBaseConnection.javaPerson.javaPersonDAO.javaPersonDAOImpl.javaDAOFactory.java五个类(其中PersonDAO.java是接口)。

1.其中DataBeaseConnection中实现,数据库的连接操作,在构造器中实现数据库连接,用getConnection()返回一个Connectionclose()实现关闭操作。

2.Person类是一个javaBean,不多说。

3.PersonDAO定义了一个,对Person表进行操作的接口,有:

// 得到全部的记录数

public int getAllCount() throws Exception ;

// 得到模糊查询的记录数

public int getByLikeCount(String cond) throws Exception ;

// 得到全部的记录

public List queryAll(int currentPage,int lineSize) throws Exception ;

// 模糊查询记录

public List queryByLike(String cond,int currentPage,int lineSize) throws Exception ;

四个方法。

4.PersonDAOImplPersonDAO的实现,在这里我们通过DBMSSQL语句实现了真分页

例如关键字搜索,sql语句为:

SELECT id,uid,name,password FROM person WHERE uid LIKE ? OR name LIKE ? limit "+(currentPage-1)*lineSize+","+lineSize

Limit + 查询开始记录号(从0开始) + 查询的记录条数,其中,currentPagelineSize是传递过来的参数。

查询所有的记录数为:SELECT id,uid,name,password FROM person limit "+(currentPage-1)*lineSize+","+lineSize

5.DAOFactory是一个工厂类,只有一个方法,

public static PersonDAO getPersonDAOInstance()

{

return new PersonDAOImpl() ;

}

返回一个接口

·关键的是对这些类的调用,我们不再放在jsp中,而是用一个servlet去处理,servlet通过session中设置的参数与jsp联系起来,通常像这种查询,我们将List添加到session中,再在jsp中获得,从而实现遍历与显示。这就实现了MVC模式,将jsp中的java代码减到最少。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics