Servlet第四讲
(一)如何在servlet中显示图片
在webapps下建立一个文件夹images,然后拷贝图片到此文件下,在servlet中添加:<img src=images/lola.jpg>即可
(二)分页技术详解
2.1分页方法一
先讲分页算法
需要定义四个变量:
int pageSize:每页显示多少条记录
int pageCount:一共有多少页
int pageNow:希望显示第几页
int rowCount:一共有多少条记录
说明:
pageSize是指定的
pageNow是用户选择的
rowCount是从表中查询得到的
pageCount是计算出来的:计算方法——
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
举例说明:
有用户表共9条记录:rowCount=9;
每页显示3条记录:pageSize=3;
那么根据我们的算法:pageSize=3刚好不多不少
如果每页显示4条记录:pageSize=4 那么pageCount=3,那么最后一页只有一条记录,所以,不管怎样都是正确的
2.2分页方法二
针对前面提出的问题,用
select 字段名列表 from 表名 where id between ? and ?
以前面的users表为例,显示第三页,该查询语句就是:
select * from users where userId between 7 and 9
这个sql语句确实是比较快,但是它有一个问题,就是如果表的id被删除,那么,某页可能就会少一个记录
解决方案:
ms sqlserver数据库
select top pageSize 字段名列表 from 表名 where id not in
(select top pageSize*(pageNow-1) id from 表名)
以users表为例,显示第三页,查询语句为:
select top 3 * from users where userId not in
(select top 6 userId from users)
My sql数据库
My sql数据库最简单,是利用mysql的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为:
SELECT * FROM 表名称 LIMIT M,N
例如从表Sys_option(主键为sys_id)中从第10条记录后开始检索20条记录,语句如下:
select * from sys_option limit 10,20
快速为表增加记录:
insert into users (username,passwd,email,grade) select username,passwd,email,grade from users;
(三)用户登录系统功能改进
参考代码:Wel.java