技术架构:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(Struts版已经在weblogic7下跑通,tomcat5还不行);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
btw:谁有兴趣想写个webwork版本的,可以和我联系,或直接发个patch给我
---------------------------------
工作原理:想法很简单,就是应用设计模式里的"模板方法模式",把分页计算的逻辑封装在一个抽象父类(PagingController)里面,留下三个抽象方法:doHandleRequest(处理请求)、getTotalRecordsNumber(计算总记录数)、makeSearchCriteria(构造查询条件,可选)供子类型重写,使得子类型尽量的简单,让我们可以专注于业务逻辑而不需要处理分页逻辑。示例如下:
<script>render_code();</script>
Struts版原理相同。
在页面显示翻页链接只需一行代码:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(Struts版已经在weblogic7下跑通,tomcat5还不行);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
btw:谁有兴趣想写个webwork版本的,可以和我联系,或直接发个patch给我
---------------------------------
工作原理:想法很简单,就是应用设计模式里的"模板方法模式",把分页计算的逻辑封装在一个抽象父类(PagingController)里面,留下三个抽象方法:doHandleRequest(处理请求)、getTotalRecordsNumber(计算总记录数)、makeSearchCriteria(构造查询条件,可选)供子类型重写,使得子类型尽量的简单,让我们可以专注于业务逻辑而不需要处理分页逻辑。示例如下:
代码
- public class UserPagingController extends PagingController {
- private final Logger logger = Logger.getLogger(this.getClass());
- private UserDAO userDAO;
- protected ModelAndView doHandleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- Map map = super.getSearchCriteria(request);
- int beginNo = super.computeRecordsBeginNo(request);
- int recordsNumber = super.computeRecordsNumberToRead(request);
- List usersList = userDAO.findUsers(map, beginNo, recordsNumber);
- logger.debug(usersList);
- return new ModelAndView("usersList", "usersList", usersList);
- }
- protected int getTotalRecordsNumber(HttpServletRequest request) {
- int result = userDAO.countUsers(super.getSearchCriteria(request));
- logger.debug("users number================:" + result);
- return result;
- }
- protected Map makeSearchCriteria(HttpServletRequest request) {
- HashMap map = new HashMap();
- String firstName = request.getParameter("firstName");
- if (firstName != null && firstName.trim().length() > 0) {
- map.put("firstName", firstName);
- }
- logger.debug(map);
- return map;
- }
- public void setUserDAO(UserDAO userDAO) {
- this.userDAO = userDAO;
- }
- }
Struts版原理相同。
在页面显示翻页链接只需一行代码:
代码
- <page:pagebar url="/user_query.html?" bordercolor="#F4F9FF" bgcolor="#F4F9FF"/>