⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.jsp

📁 Ajax经典实例大全
💻 JSP
字号:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page language="java"%>
<%@ page import="java.sql.*,ajax.db.DBUtils"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>提前加载分页文章</title>

<style type="text/css">
/* 页面字体样式 */
body, td, input {
    font-family:Arial;
    font-size:12px;
}

/* 表格基本样式 */
table.default {
    border-collapse:collapse;
}

/* 表格单元格样式 */
table.default td {
    border:1px solid black;
    padding:3px;
    height:27px;
}

/* 列头样式 */
table.default td.item {
    background:#006699;
    color:#fff;
    text-align:center;
}

/* 分页链接span样式 */
span.pageLink {
    font-size:12px;
    margin:3px;
    font-weight:bold;
    padding:2px;
    border:1px solid #003366;
}

/* 分页链接样式 */
span.pageLink a {
    color:#003366;
    font-weight:normal;
    text-decoration:none;
}

/* div统一样式 */
div {
    margin-top:10px;
}

/* 文章容器样式 */
#container {
    width:600px;
    font-size:14px;
}

/* 分页div样式 */
#pageDiv {
    text-align:right;
}
</style>

<script type="text/javascript">
var xmlHttp;            //用于保存XMLHttpRequest对象的全局变量
var cacheXmlHttp;       //用于保存缓存用XMLHttpRequest对象的全局变量
var currId;             //保存当前文章编号
var cachedId;           //用于保存缓存的文章编号
var cachedPageNum = 0;  //缓存的文章页序号
var cachedText;         //缓存的文章内容

//用于创建XMLHttpRequest对象
function createXmlHttp() {
    //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
    if (window.XMLHttpRequest) {
       xmlHttp = new XMLHttpRequest();                  //FireFox、Opera等浏览器支持的创建方式
    } else {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
    }
}

//用于创建缓存用XMLHttpRequest对象
function createCacheXmlHttp() {
    //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
    if (window.XMLHttpRequest) {
       cacheXmlHttp = new XMLHttpRequest();                  //FireFox、Opera等浏览器支持的创建方式
    } else {
       cacheXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
    }
}

//获取文章信息
function loadText(id, pageNum) {
    currId = id;                                //设置当前加载文章编号

    //如果页数信息不存在,默认设置为1
    if (!pageNum) {
        pageNum = 1;
    }

    //如果缓存命中,则直接从缓存读取
    if (cachedId == id && cachedPageNum == pageNum) {
        var result = cachedText;                //从缓存中获取文章信息

        //结果前2位数为总页数,第3-4位为当前显示页数
        var pageTotal = parseInt(result.substr(0,2),10);
        var pageNum = parseInt(result.substr(2,2),10);

        buildPageInfo(pageTotal, pageNum);      //根据总页数和当前页数建立各分页链接
        var text = result.substr(4);            //去掉前4位,剩下的内容为文章部分
        document.getElementById("textDiv").innerHTML = text;    //将文章写入页面
        return;                                 //结束函数调用
    }

    createXmlHttp();                            //创建XmlHttpRequest对象
    xmlHttp.onreadystatechange = showText;      //设置回调函数
    xmlHttp.open("GET", "loadtext.jsp?id=" + id + "&pageNum=" + pageNum, true);
    xmlHttp.send(null);
}

//显示加载的文章
function showText() {
    if (xmlHttp.readyState == 4) {
        var result = xmlHttp.responseText;      //获取服务器响应结果

        //结果前2位数为总页数,第3-4位为当前显示页数
        var pageTotal = parseInt(result.substr(0,2),10);
        var pageNum = parseInt(result.substr(2,2),10);

        buildPageInfo(pageTotal, pageNum);      //根据总页数和当前页数建立各分页链接
        var text = result.substr(4);            //去掉前4位,剩下的内容为文章部分
        document.getElementById("textDiv").innerHTML = text;    //将文章写入页面
    }
}

//根据总页数和当前页数建立各分页链接
function buildPageInfo(pageTotal, pageNum) {
    var pageInfo = "";                          //保存页面片断

    //从1到总页数进行循环创建链接节点
    for (var i=1; i<=pageTotal; i++) {
        pageInfo += "<span class='pageLink'>";  //每个节点使用一个span
        if (i==pageNum) {
            pageInfo += pageNum;                //当前页无链接
        } else {
            pageInfo += "<a href='#' onclick='loadText(" + currId + "," + i + ")'>" + i + "</a>";
        }
        pageInfo += "</span>";
    }
    document.getElementById("pageDiv").innerHTML = pageInfo;    //将创建好的页面片断写入页面

    //如果当前页面不是最后一页,缓存下一页内容
    if (pageNum < pageTotal) {
        cacheNextPage(currId, pageNum + 1);
    }
}

//缓存下一页信息
function cacheNextPage(id, pageNum) {
    cachedId = id;                                   //保存缓存的id
    cachedPageNum = pageNum;
    createCacheXmlHttp();                            //创建XmlHttpRequest对象
    cacheXmlHttp.onreadystatechange = saveCacheText; //设置回调函数
    cacheXmlHttp.open("GET", "loadtext.jsp?id=" + id + "&pageNum=" + pageNum, true);
    cacheXmlHttp.send(null);
}

//保存缓存文章信息
function saveCacheText() {
    if (cacheXmlHttp.readyState == 4) {
        cachedText = cacheXmlHttp.responseText;     //将文章写入缓存变量
    }
}
</script>
</head>

<body>
<h1>提前加载分页文章</h1>

<table class="default">
<tr>
    <td class="item">标题</td>
    <td class="item">作者</td>
    <td class="item">阅读</td>
</tr>
<%
    String sql = "select id, title, author from articles";   //定义查询数据库的SQL语句
    Connection conn = null;                 //声明Connection对象
    PreparedStatement pstmt = null;         //声明PreparedStatement对象
    ResultSet rs = null;                    //声明ResultSet对象
    try {
        conn = DBUtils.getConnection();     //获取数据库连接
        pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
        rs = pstmt.executeQuery();          //执行查询,返回结果集
        while (rs.next()) {
            %>
            <tr>
                <td><%=rs.getString("title")%></td>
                <td><%=rs.getString("author")%></td>
                <td><input type="button" value="阅读" onclick="loadText(<%=rs.getString("id")%>)"></td>
            </tr>
            <%
        }
    } catch (SQLException e) {
        System.out.println(e.toString());
    } finally {
        DBUtils.close(rs);                  //关闭结果集
        DBUtils.close(pstmt);               //关闭PreparedStatement
        DBUtils.close(conn);                //关闭连接
    }
%>
</table>

<div id="container">
文章内容:
<div id="pageDiv"></div>
<div id="textDiv"></div>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -