JAVA基础之JDBC开发、JSTL语法、EL表达式与数据分页
一、直接使用JDBC开发的问题
1.当表中的列很多时,需要写很长的SQL语句
还需要写大量 setXXX()
设置参数语句
读取数据时还需要写大量setXXXX()设置属性语句
2.非常容易出错,而且不方便修改
如:某个字段需要去掉,就需要调整后续序号
大量时间都花在“搬砖”上面
而且很容易埋下bug,后期测试和修复时间大大增加!!!
3.效率很差,质量不高
解决方法:将容易出错,大量繁琐的代码封装起来。
给程序员提供更加高级API(Application Programming Interface)
一套完整的,能够解决某个方面问题的API,可以称为框架(framework)、库(library)
二、关于JSTL部门语法
<c:forTokens items =”字符串列表” delims=”字符串中的分隔符” var = “变量名”
varStatus =”迭代状态数据对象名”>
${s.index} 索引(从0开始)
${s.count} 序号(从1开始)
${s.current} 当前值 与var相等
${s.first} 布尔值 是否是第一项
${s.last} 布尔值 是否是最后一项
</c:forTokens>
varStatus 这个属性在<c:forEach>中也存在
JSTL的下拉列表、单选框、复选框的选中问题
<select>
<option value=”3” ${变量==
值?”selected”:””}>要选中的项</option>
<option value=”3” ${变量 eq值?”selected”:””}>要选中的项</option>
<input type=”radio” value=”3” ${变量==值?”checked”:””}>要选中的项
</select>
三、关于Getter/Setter方法
如果属性以is开头,Eclipse生成的getter/setter如下
getter: isXXX
setter : isXXX
举例:isMale、isAdmin
isMale()、setMale()、isAdmin()、setAdmin()
使用EL表达式时,应该写成
${obj.male} ${obj.admin}
四、EL表达式
1、语法结构
${expression}
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如 .
或 - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:
${ user. My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data是一个变量
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
五、数据分页
数据分页的必要性
1.一次性把所有数据(如果很多的话)从数据库中查出来回给数据带来很大的IO开销,而IO是最慢的操作,结果是数据库并发了大大降低!
2.一次性把大量的数据从数据库传到应用服务器,再从应用服务器传到用户浏览器会大大占用服务器宝贵的带宽资源,导致服务器能够处理请求大大减少!
3.查询和传送大量数据需要时间必然很长,结果导致页面反应速度变慢
用户体验变差
4.人类可读的数据不超过几十条,传送成百上千条数据没有意义
分页数据的查询
pageNo 页码(从1开始)
pageSize 每页条数(默认10条)
能够计算出来任意pageNo对应的数据的起始索引位置
start =(pageNo-1)*pageSize -----起始索引位置
count = pageSize -----数据条数
MySQL数据库的Limit子句:
Limit start,count
示例:含义是从role这个表中取从索引为0开始的6条数据
六、Pager类的设计
1. Pager类的职责: 根据pageNo、total、pageSize、showPageNos计算pageCount、start、end
这些数据用来支持在页面上显示分页信息和页码:
如下所示:
页/共13页
1 2 4 5 6 7 8 9
2.区分哪些数据时传过来的,哪些数据是算出来的
将传过来的数据当做构造方法的参数
根据参数的变化频率调整参数的位置(Eclipse重构功能支持)
将变化频率高的参数放在前面,同时增加构造方法重载,对变化频率低的设置默认值
3.内部类
如果需要把多个类定义在一个文件中,尤其是这些类都需要public的时候,可以把一个类作为主类,其他类定义在它的内部
------内部类
4.自定义异常类
如果希望通过自定义异常向外部提示错误,则需要让自定义异常类从Throwable继承
自定义异常类从Throwable继承或从Throwable的子类继承
常用的子类有Exception、RuntimeException
从Exception继承类是受查异常,必须try/catch或throws
从RuntimeException继承的是非受查异常,不必显式地try/catch或throws
编程时更加自由
使用throw抛出异常
JAVA基础之JDBC开发、JSTL语法、EL表达式与数据分页的更多相关文章
- java基础(11) -JDBC
java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...
- 【转】JSP中的JSTL与EL表达式用法及区别
对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念JSTL一般要配合EL ...
- jsp中的JSTL与EL表达式用法及区别
对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念 JSTL一般要配合E ...
- jstl,el表达式
在上一篇中,我们写了将数据传到jsp页面,在jsp页面进行展示数组,但是我们发现,在jsp页面写代码是一件很烦的事,一个循环要拆成两部分,例如for循环,在例如if语句: <%int a=22; ...
- JSTL与EL表达式(为空判断)
JSTL与EL表达式(为空判断) 一.循环遍历集合 1.在jsp中引入标准函数声明 <%@ taglib uri="http://java.sun.com/jsp/jstl/cor ...
- EL表达式获取数据
EL 全名为Expression Language. EL主要作用 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.(某个web域 ...
- EL表达式读取数据(在Map,javaBean,List)
<%@page import="cn.hncu.domain.User"%><!--这里是进行导包--><%@ page language=" ...
- 一、jsp和Servlet基础理论及jstl和EL表达式用法
1.题外话:使用JSP有近一年半的时间了,但是开发量不大.昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示.并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页 ...
- Java基础一(开发环境、注释、关键字、标识符、数据)
1.Java开发环境搭建2.HelloWorld案例3.注释.关键字.标识符4.数据(数据类型.常量) ###01java语言概述 * A: java语言概述 * a: Java是sun公司开发的一门 ...
随机推荐
- 详解php的安装模式---CGI,FASTCGI,php-fpm,mod_php,mod_cgi,mod_fcgid
1. CGI CGI是通用网关接口,HTTP服务器使用这样的接口程序来和“其他程序”(比如PHP的解释器程序)通讯,这个“其他程序”可以使用任何计算机语言来编写,它通过CGI这个接口从HTTP服务器取 ...
- java synchronized究竟锁住的是什么
刚学java的时候,仅仅知道synchronized一个线程锁.能够锁住代码,可是它真的能像我想的那样,能够锁住代码吗? 在讨论之前先看一下项目中常见关于synchronized的使用方法: publ ...
- angular学习疑问总结
服务里返回的数据是不是只能传给控制器,而不能传给指令呢?如果是的话那么指令只能通过配置scope属性来访问控制器里的数据
- FreeRTOSConfig 配置文件详解
以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 的配置文件 FreeRTOSConfig.h 中每个选项的作用.初学的话 ...
- js去掉双引号
替换: d = d.replace("\"","").replace("\"",""); 全部替换: ...
- OpenCV使用标定图
本文由 @lonelyrains 出品,转载请注明出处. 文章链接: http://blog.csdn.net/lonelyrains/article/details/46915705 上一步生成标 ...
- hive中array嵌套map以及行转列的使用
1. 数据源信息 {"student": {"name":"king","age":11,"sex" ...
- 使用wc统计代码行数
最近写了一些代码,想统计一下代码的行数,在eclipse中好像没这功能,网上搜了一下才发现原来Linux有一个统计文件行数的命令wc.使用wc可以打印出每个文件和总文件的行数.字数和字节数,如果没有指 ...
- winxp退市是微软windows操作系统的滑铁卢
winxp退市是微软windows操作系统的滑铁卢 兵败如山倒,windowsxp退市.宣布微软时代结束,windows将逐步退出中国市场,取而代之将是中国人自己的操作系统.中国人努力.中国人加油,不 ...
- jrtplib编译指南
The library offers support for the Real-time Transport Protocol (RTP), The library uses the JThread ...