《JSP入门教程(DOC格式)》第33章


可以通过 servletConfig 获得 ServletContext,这是整个web 应用共享 
的一个对象。
7。 page
Object page = this ;
page 就代表当前 jsp 对象,也可以直接使用 this 引用。
8。 config
ServletConfig config = getServletConfig();
这是在 servlet 初始化时由服务器传入的对象,可以通过它获得 web。xml 
中定义的初始化参数。
9。 exception
想在 jsp 中使用这个对象需要满足一些条件了。
首先我们要在 14…05/index。jsp 中故意抛出一个异常。
130 / 148
…………………………………………………………Page 131……………………………………………………………
str 值是 null,直接在 null 上调用 length()方法会引发 
NullPointerException,然后我们可以看到页面第一行使用 jsp 指令 
(directive)设置了errorPage=〃error。jsp〃,这样在出现异常的时候 
就会自动 forward 到 error。jsp 中。现在看看 error。jsp 中有些什么。
index
最主要的是在 jsp 指令(directive)中设置 isErrorPage=〃true〃,这样 
我们就可以在 jsp 中使用 exception 对象了,实际上这个异常是从 
request 中取出来的。
到此为止,jsp 九大默认对象已经讲解完毕,其中常用的还是四个作用域对应的 
对象,其他的了解即可。
131 / 148
…………………………………………………………Page 132……………………………………………………………
第 15 章 分页
注意
实际上分页并不属于 jsp 的基础知识范畴,不过分页毕竟是非常常用的一个功 
能,其中也会涉及到 jsp 的一些应用,所以还有很有价值一看的。
如果你不满足以下任一条件,请继续阅读,否则请跳过此后的部分,进入下一章: 
第 16 章 Never End。。。。
1。 了解如何进行数据库分页。
2。 了解如何使用 jstl 标签替换分页的 jsp 代码。
15。1。 数据库分页
所谓的分页,就是要查询的数据太多了,一次性显示出来的话,既不容易查看也 
影响性能。
就比如我们这里有 39 条数据,分 8 页显示出来,每页 5 条记录。
132 / 148
…………………………………………………………Page 133……………………………………………………………
首先说数据库,里边只有一张表 bean,三个字段 id; title 和 add_date。
…bean
create table bean(
id bigint; …主键
title varchar (100); …标题
add_date datetime …时间
);
对应的 Bean。java 咱们就不用写了,只看一看后台去数据库读取数据库的 
BeanServlet。java。
package anni;
import java。io。*;
import java。sql。*;
import java。util。*;
import javax。servlet。*;
import javax。servlet。http。*;
public class BeanServlet extends HttpServlet {
public void doGet(HttpServletRequest request; HttpServletResponse
response)
throws ServletException; IOException {
Connection conn = null;
Statement state = null;
ResultSet rs = null;
133 / 148
…………………………………………………………Page 134……………………………………………………………
// 获得当前页码
int pageNo = 1;
try {
pageNo = Integer。parseInt(request。getParameter(〃pageNo〃));
} catch (Exception ex) {

if (pageNo 《 1) {
pageNo = 1;

request。setAttribute(〃pageNo〃; pageNo);
List list = new ArrayList();
int count = 0;
// 根据页码从数据库中获得对应的数据
try {
conn = DbUtils。getConn();
state = conn。createStatement();
rs = state。executeQuery(〃select limit 〃 + (pageNo * 5 5)
+ 〃 5 * from bean〃);
while (rs。next()) {
Bean bean = new Bean();
bean。setId(rs。getLong(1));
bean。setTitle(rs。getString(2));
bean。setAddDate(rs。getTimestamp(3));
list。add(bean);

rs。close();
rs = state。executeQuery(〃select count(*) from bean〃);
if (rs。next()) {
count = rs。getInt(1);

} catch (Exception ex) {
ex。printStackTrace();
} finally {
DbUtils。close(rs; state; conn);

request。setAttribute(〃count〃; count);
request。setAttribute(〃list〃; list);
134 / 148
…………………………………………………………Page 135……………………………………………………………
request。getRequestDispatcher(〃/query。jsp〃)。forward(request;
response);


代码长了,分三段来看:
// 获得当前页码
int pageNo = 1;
try {
pageNo = Integer。parseInt(request。getParameter(〃pageNo〃));
} catch (Exception ex) {

if (pageNo 《 1) {
pageNo = 1;

request。setAttribute(〃pageNo〃;
小说推荐
返回首页返回目录