一、直接使用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表达式与数据分页的更多相关文章

  1. java基础(11) -JDBC

    java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...

  2. 【转】JSP中的JSTL与EL表达式用法及区别

    对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念JSTL一般要配合EL ...

  3. jsp中的JSTL与EL表达式用法及区别

    对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念 JSTL一般要配合E ...

  4. jstl,el表达式

    在上一篇中,我们写了将数据传到jsp页面,在jsp页面进行展示数组,但是我们发现,在jsp页面写代码是一件很烦的事,一个循环要拆成两部分,例如for循环,在例如if语句: <%int a=22; ...

  5. JSTL与EL表达式(为空判断)

    JSTL与EL表达式(为空判断) 一.循环遍历集合  1.在jsp中引入标准函数声明  <%@ taglib uri="http://java.sun.com/jsp/jstl/cor ...

  6. EL表达式获取数据

    EL 全名为Expression Language. EL主要作用 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.(某个web域 ...

  7. EL表达式读取数据(在Map,javaBean,List)

    <%@page import="cn.hncu.domain.User"%><!--这里是进行导包--><%@ page language=" ...

  8. 一、jsp和Servlet基础理论及jstl和EL表达式用法

    1.题外话:使用JSP有近一年半的时间了,但是开发量不大.昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示.并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页 ...

  9. Java基础一(开发环境、注释、关键字、标识符、数据)

    1.Java开发环境搭建2.HelloWorld案例3.注释.关键字.标识符4.数据(数据类型.常量) ###01java语言概述 * A: java语言概述 * a: Java是sun公司开发的一门 ...

随机推荐

  1. mplayer 全屏问题

    [root@ok home]# gedit ~/.mplayer/config # Write your default config options here! zoom=yes #加上这个参数!全 ...

  2. swift 属性和方法

    属性和常量 如果创建了一个结构体的实例并赋值给一个常量,则无法修改实例的任何属性: let rangeOfFourItems = FixedLengthRange(firstValue: 0, len ...

  3. 基于jQuery页面窗口拖动预览效果

    今天给大家分享一款基于Query页面窗口拖动预览效果.这是一款基于jQuery+HTML5实现的模拟页面窗口显示拖动窗口预览特效.这款实例适用浏览器:IE8.360.FireFox.Chrome.Sa ...

  4. 演练:创建和注册自定义 HTTP 模块

    本演练演示自定义 HTTP 模块的基本功能. 对于每个请求,都需要调用 HTTP 模块以响应 BeginRequest 和 EndRequest 事件. 因此,该模块在处理请求之前和之后运行. 如果 ...

  5. TCP协议格式

    TCP协议 协议格式 0 16 31 |16位源端口 | 16位目标端口| | 32位序号 | | 32位确认序号 | |4位首部长度|保留(6位)|URG|ACK|PSH|RST|SYN|FIN|1 ...

  6. C#代码获取或设置Iframe中的HTML

    在最近的数据采集研究中, 发现很多页面的内容都是在iframe中的, 这位采集带来了不少困难. 经过一番思考之后, 我想到了C#的解决办法: 1. 运行Spider Studio, 加载页面 http ...

  7. kettle利用触发器实现数据同步

    2016年8月17日 一.目的 通过触发器实现数据同步二.思路 1.在数据库需要同步的源表中建立一个insert触发器,当有新数据插入时,会自动将新插入数据的主键记录到临时表temp中.(当然也可以记 ...

  8. 关于对象序列化json 说说

    下面一个json格式图(说一下,json 其实就是js 数组和对象的一种字符串表现形式 var obj=[] 或者var obj={}  ) var json= {} 如下 从图中看 json中有两个 ...

  9. 在J2EE中属于Web层的组件有(选择1项)

    在J2EE中属于Web层的组件有(选择1项) A. HTML B. EJB C. Applet D. JSP 解答:D

  10. java---同步与并发概念

    Java中并发的形式无非是多线程和多进程两种形式.这两种形式都是可以利用多核来发挥计算能力的. 先说并发: 多进程意味着同时运行多个JVM,这个代价通常比多线程高,每个JVM都有自己的堆栈.都要分别加 ...