回忆录:10年前我写的java web代码-从批量操作到分页的成长笔记
翻到多年前的笔记字里行间都是刚入行时的青涩与认真。从批量全选/取消到延迟加载优化再到手写分页工具类每一行代码、每一句感悟都是实打实的成长痕迹。干脆整理出来当作一段技术成长回忆录也给当年努力的自己留个纪念。一、批量操作用原生JS实现全选/取消全选当年做地址管理的批量操作时我用原生JavaScript写了全选和取消全选的方法思路简单直接完全是新手最朴素的实现//批量操作function checkAll(name) {var el document.getElementsByTagName(input);var len el.length;for(var i0; ilen; i){if((el[i].typecheckbox) (el[i].namename)){el[i].checked true;} } };function clearAll(name) {var el document.getElementsByTagName(input);var len el.length;for(var i0; ilen; i){if((el[i].typecheckbox) (el[i].namename)){el[i].checked false;}}};看了别的程序员写的东西才发现人家简单几句话就能实现我需要两段代码的功能比如用jQuery的简洁写法function checkAll(){if($(input[namecheckall]).attr(checked))$(input[namecheckId]).attr(checked,true);else$(input[namecheckId]).attr(checked,false);}那时候才明白同样的功能不同的写法效率和简洁度天差地别。我当时的地址显示用的是加载html代码的形式而别人用后台传参数的方式直接解决了我头疼的延迟加载问题这就是新手和熟手的差距吧。唯一相同的是我们的思路都是把id放在每条记录复选框的value属性里核心逻辑是相通的。二、手写分页工具类从0到1实现分页逻辑当年做列表展示分页是绕不开的功能我自己手写了一套分页工具类从总页数计算、当前页计算到尾页计算每一步都抠得很细完全是当年最扎实的实现1. 分页核心类设计分页类 PaginationSupport 里定义了页的大小、返回的记录数、记录总数、分页索引数组、当前分页索引通过各个属性值定义了不同的构造方法设置了get和set属性。totalcount总记录数如果超过0就将其对页面大小除以每页记录数得到的count为总页数再将它们进行取余操作大于0 页数加一分页索引数组也就得到了indexes new int[count];for (int i 0; i count; i) {indexes[i] pageSize * i;}2. 当前分页索引StartIndex计算对于获得当前分页索引 StartIndex 首先需要判断总记录数是否大于0否的话当前索引就是0。接着如果当前的索引大于等于总数那就是最后一页。startIndex 的含义假如设置每页有5条记录要找第12个记录 this.startIndex indexes[indexes.length - 1]; 也就是 indexes[2] 12/5 对应第3页。如果是小于0那就为0否则就是大于0 this.startIndex indexes[startIndex / pageSize];3. 相关代码public int getTotalPages() {int totalPages;if (getTotalCount() % getPageSize() 0) {totalPages getTotalCount() / getPageSize() 1;} else {totalPages getTotalCount() / getPageSize();}return totalPages;}/*** 当前页数 起始位置/每页记录数 1** return*/public int getCurrentPage() {int currentPage getStartIndex() / getPageSize() 1;return currentPage;}/*** 尾 页; (总页数-1)*每页记录数** return*/public int getLastPage() {int lastPage (getTotalPages() - 1) * getPageSize();return lastPage;}补充说明- pageSize 想要显示的记录数- nextIndex 下一页相同位置的记录同理可以得知前一个的索引值- !DOCTYPE html 是HTML5独有的声明当年做前端时的小知识点也记在了笔记里三、现在回头看的感慨当年写的这些代码现在看真的很基础甚至有些写法不够优雅但每一行都是当年一点点啃出来的。从原生JS的批量操作到jQuery的简洁写法从手写分页的每一个计算逻辑到理解延迟加载的优化思路这就是一个Java Web开发者最真实的成长路径。那时候会为了一个功能的简洁写法兴奋好久会为了一个分页逻辑抠好几天会把学到的知识点认认真真记在日志里。现在再看这些文字才发现原来当年的自己这么努力这些青涩的代码就是青春最好的证明。致那些年敲代码的自己也致每一个正在成长路上的开发者。