Java菜鸟学习日记16
来源:互联网 发布:中小企业网络解决方案 编辑:程序博客网 时间:2024/05/16 08:59
直接使用JSBC开发的问题
当表中的列很多时,需要写很长的SQL语句,还需要写大量的参数设置语句(setxxx())
读取数据时,还需写大量的设置属性语句(setxxx())
易错且不易修改,如某个字段需要去掉,就需要调整后续的很多序号
大量的时间都花在了“搬砖”上
而且很容易埋下bug,后期测试和修复时间大大增加
结论:效率低下,质量不高
因此在开发中,将容易出错的,大量繁琐的代码封装起来。给程序员提供更加高级的API(Application Programming Interface)
一套完整的,能够解决某个方面问题的API,可以称为框架(framework)、库(library)
单选列表
<c:forTokens items="字符串列表" delims="字符串中的分隔符" var="变量名" varStatus="迭代状态数据对象名">
${ s.index}:索引(从0开始)
${ s.count}:序号(从1开始)
${ s.current}:当前值,与var相等
${ s.first}:布尔值,是否是第一项
${ s.last}:布尔值,是否是最后一项
</c:forTokens>
varStaus:这个属性在<c:forEach>中也存在
JSTL下拉列表、单选框、复选框的选中问题:
<select>
<option value="3" ${变量==值?"selected":""}>要选中的项</option>
<option value="3" ${变量 eq 值?"selected":""}>要选中的项</option>
单选框
<input type="radio" vaalue="3" ${变量==值?"checked":""}>要选中的对象
关于Getter/Setter方法
如果属性以is开头,Eclipse生成getter/setter如下:
getter:isxxx
setter:setxxx
举例:
isMale、isAdmin
isMale():setMale():isAdmin():setAdmin()
使用EL表达式时,应该写成:
${obj.male} ${obj.admin}
数据分页的必要性
- 一次性把所有的数据从数据库中查出来,会给数据库带来很大的IO开销,而IO是最慢的操作。结果是数据库并发量大大降低。
- 一次性把大量的数据库传到应用服务器,再从应用服务器传到用户浏览器,会占用服务器宝贵的带宽资源,导致服务器能够处理请求大大减少。
- 查询和传送大量数据,需要的时间必然很长,结果导致页面反应速度变慢,用户体验变差
- 人类可读的数据不超过几十条,传送成百上千条数据没有意义
分页数据的查询
pageNo 页码(从1开始)
pageSize 每页条数(默认10条)
pageTotal
能够计算出来任意的pageNo对应的起始索引位置
start = (pageNo-1)*pageSize
count = pageSize
MySQL数据库的Limit子句
limit start,count
start:起始索引位置
count:每页的条数
Pager类的设计
pager类的职责:
根据pageNo、total、pageSize、showPageNos计算pageCount、start、end
这些数据用来支持在页面上显示分页信息和页码:
共123条数据,第3页/共13页 1 2 3 4 5 6 7 8 9
区分那些数据是传过来的,那些数据是算出来的,将传过来的数据当作构造方法的参数。根据参数的变化频率调整参数的为值(Eclipse重构功能支持)
将变化频率高的参数放在前面
同时增加构造方法重载,对变化频率低的设置默认值
内部类
如果需要把多个类定义在一个文件中,尤其是这些类都需要publilc的时候,可以把一个类作为主类,其他类定义在它的内部
自定义异常类
如果希望自定义异常向外部提示错误,则需要让自定义异常类从Throwable继承或从其子类继承,常用的子类是Exception和RuntimeException
Exception:继承它为受查异常,必须try/catch或throws
RuntimeException:继承它为非受查异常,不必try/catch或throws,编程时更加自由
受用throws抛出异常
阅读全文
0 0
- Java菜鸟学习日记16
- Java菜鸟学习日记1
- Java菜鸟学习日记2
- Java菜鸟学习日记3
- Java菜鸟学习日记4
- Java菜鸟学习日记5
- Java菜鸟学习日记6
- Java菜鸟学习日记7
- Java菜鸟学习日记8
- Java菜鸟学习日记9
- Java菜鸟学习日记10
- Java菜鸟学习日记11
- Java菜鸟学习日记12
- Java菜鸟学习日记13
- Java菜鸟学习日记14
- Java菜鸟学习日记15
- Java菜鸟学习日记17
- Java菜鸟学习日记18
- 谷歌浏览器插件安装
- 如何提高PHP应用的性能
- Unity5中GUI Text不显示的原因
- webpack 插件: html-webpack-plugin
- 要实现两个数字的交换,你还是只抓着那一种方法不放吗?
- Java菜鸟学习日记16
- hdu1285确定比赛名次 (拓扑排序)
- read\write 堵塞与非堵塞读取串口数据
- 【OpenCV入门指南】第五篇 轮廓检测 上
- 细说 Request[]与Request.Params[]
- 分治法中的合并排序和快速排序
- 题目1026:又一版 A+B
- Smart Cutter(M2TS/MTS/TS/TRP/MP4无损剪辑软件) v1.8.3 绿色汉化版
- 【OpenCV入门指南】第六篇 轮廓检测 下