Ajax之数据连接信息捕获

数据库:

-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version    5.1.39-community

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE=‘NO_AUTO_VALUE_ON_ZERO‘ */;

--
-- Create schema db_database16
--

CREATE DATABASE IF NOT EXISTS db_database16;
USE db_database16;

--
-- Definition of table `tb_bbsinfo`
--

DROP TABLE IF EXISTS `tb_bbsinfo`;
CREATE TABLE `tb_bbsinfo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘自动编号‘,
  `title` varchar(50) CHARACTER SET utf8 NOT NULL COMMENT ‘标题‘,
  `content` varchar(200) CHARACTER SET utf8 NOT NULL COMMENT ‘内容‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gbk;

--
-- Dumping data for table `tb_bbsinfo`
--

/*!40000 ALTER TABLE `tb_bbsinfo` DISABLE KEYS */;
INSERT INTO `tb_bbsinfo` (`id`,`title`,`content`) VALUES
 (1,‘明日科技编程即将面市!‘,‘明日科技编程词典即将面市!‘),
 (2,‘今明两天气温有所回升!‘,‘今明两天气温有所回升!‘),
 (3,‘关于元旦放假的通知!‘,‘关于元旦放假的通知!‘);
/*!40000 ALTER TABLE `tb_bbsinfo` ENABLE KEYS */;

--
-- Definition of table `tb_book`
--

DROP TABLE IF EXISTS `tb_book`;
CREATE TABLE `tb_book` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bookName` varchar(100) NOT NULL,
  `introduce` varchar(1000) NOT NULL,
  `author` varchar(30) NOT NULL COMMENT ‘作者‘,
  `picture` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;

--
-- Dumping data for table `tb_book`
--

/*!40000 ALTER TABLE `tb_book` DISABLE KEYS */;
INSERT INTO `tb_book` (`id`,`bookName`,`introduce`,`author`,`picture`) VALUES
 (1,‘Java Web程序开范例宝典‘,‘本书精选了469个典型实例,所选实例覆盖了开发中的热点问题和关键问题。全书按实际应用进行分类,可以使读者在短时间内掌握更多有用的技术,快速提高编程水平。‘,‘明日科技‘,‘javawebcxkfflbd.jpg‘),
 (2,‘Java范例完全自学手册‘,‘本书是一本集查询、使用、学习和练习为一体的自学手册,书中介绍了应用Java进行开发的各种技术和技巧。‘,‘明日科技‘,‘javaslwqzxsc.jpg‘),
 (3,‘Java Web开发典型模块大全‘,‘本书以关键技术为核心,通过21个典型模块系统,全面地介绍了如何使用JSP进行各领域的程序开发。‘,‘明日科技‘,‘javawebdxmkdq.jpg‘),
 (4,‘JSP项目开发全程实录‘,‘本书提供了10个经典案例。这10个案例不仅按照软件工程的开发流程进行实施,而且在书中更是按照开发背景、需求分析、系统功能分析、数据库分析、数据库建模和系统开发的顺序进行讲解,务求使读者切实体会循序渐近的开发过程。‘,‘周桓、王殊宇‘,‘jspxmkfqcsl.jpg‘);
/*!40000 ALTER TABLE `tb_book` ENABLE KEYS */;

--
-- Definition of table `tb_news`
--

DROP TABLE IF EXISTS `tb_news`;
CREATE TABLE `tb_news` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘ID号‘,
  `title` varchar(50) NOT NULL COMMENT ‘标题‘,
  `content` varchar(300) NOT NULL COMMENT ‘内容‘,
  `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘发布时间‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `tb_news`
--

/*!40000 ALTER TABLE `tb_news` DISABLE KEYS */;
INSERT INTO `tb_news` (`id`,`title`,`content`,`addTime`) VALUES
 (1,‘新闻1‘,‘内容1‘,‘2009-11-27 16:01:57‘),
 (2,‘新闻2‘,‘内容2‘,‘2009-11-27 16:17:02‘);
/*!40000 ALTER TABLE `tb_news` ENABLE KEYS */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;

db_database13

connDB.properties:

DB_CLASS_NAME=com.mysql.jdbc.Driver
DB_URL=jdbc:mysql://127.0.0.1:3306/db_database16?user=root&password=111&useUnicode=true

package com.caiduping.core;

//导入java.io.InputStream类
import java.io.InputStream;
//导入java.sql包中的所有类
import java.sql.*;
//导入java.util.Properties类
import java.util.Properties;

public class ConnDB {
    // 声明Connection对象的实例
    public Connection conn=null;
    // 声明Statement对象的实例
    public Statement stmt=null;
    // 声明ResultSet对象的实例
    public ResultSet rs=null;
    // 指定资源文件保存的位置
    public static String propFileName="connDB.properties";
    // 创建并实例化Properties对象的实例
    public static Properties prop=new Properties();
    //定义保存数据库驱动的变量
    public static String dbClassName="com.mysql.jdbc.Driver";
    private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/db_database16?user=root&password=111&useUnicode=true";
    /*
     * 构造方法
     *
     * */
    public ConnDB(){
        try{
            //将Properties文件读取到InputStream对象中
            InputStream in=getClass().getResourceAsStream(propFileName);
            // 通过输入流对象加载Properties文件
            prop.load(in);
            // 获取数据库驱动
            dbClassName=prop.getProperty("DB_CLASS_NAME");
            //获取URL
            dbUrl=prop.getProperty("DB_URL","dbUrl");
        }catch(Exception e){
            // 输出异常信息
            e.printStackTrace();
        }
    }
    /*
     * 建立数据连接
     *
     * */
    public static Connection getConnection(){
        Connection conn=null;
        //连接数据库时可能发生异常因此需要捕捉该异常
        try{
            //装载数据库驱动
            Class.forName(dbClassName).newInstance();
            //建立与数据库URL中定义的数据库的连接
            conn=DriverManager.getConnection(dbUrl);
        }catch(Exception ee){
        ee.printStackTrace();
        }
        if (conn == null) {
            //在控制台上输出提示信息
            System.err.println("警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl);
        }
        return conn;
    }
    /*
     * 执行查询语句
     *
     * */
    public ResultSet executeQuery(String sql) {
        try {
            // 调用getConnection()方法构造Connection对象的一个实例conn
            conn = getConnection();
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            //执行SQL语句,并返回一个ResultSet对象rs
            rs = stmt.executeQuery(sql);
        } catch (SQLException ex) {
            // 输出异常信息
            System.err.println(ex.getMessage());
        }
        // 返回结果集对象
        return rs;
    }
    /*
     * 执行更新操作
     *
     * */
    public int executeUpdate(String sql) {
        // 定义保存返回值的变量
        int result = 0;
        try {
            // 调用getConnection()方法构造Connection对象的一个实例conn
            conn = getConnection();
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
            // 执行更新操作
            result = stmt.executeUpdate(sql);
        } catch (SQLException ex) {
            // 将保存返回值的变量赋值为0
            result = 0;
        }
        // 返回保存返回值的变量
        return result;
    }
    /*
     * 关闭数据库的连接
     *
     * */
    public void close() {
        try {
            // 当ResultSet对象的实例rs不为空时
            if (rs != null) {
                // 关闭ResultSet对象
                rs.close();
            }
            // 当Statement对象的实例stmt不为空时
            if (stmt != null) {
                // 关闭Statement对象
                stmt.close();
            }
            // 当Connection对象的实例conn不为空时
            if (conn != null) {
                // 关闭Connection对象
                conn.close();
            }
        } catch (Exception e) {
            // 输出异常信息
            e.printStackTrace(System.err);
        }
    }
}

ConnDB

// 定义一个全局变量net
var net = new Object();
// 编写构造函数
net.AjaxRequest = function(url, onload, onerror, method, params) {
    this.req = null;
    this.onload = onload;
    this.onerror = (onerror) ? onerror : this.defaultError;
    this.loadDate(url, method, params);
}
// 编写用于初始化XMLHttpRequest对象并指定处理函数,最后发送HTTP请求的方法
net.AjaxRequest.prototype.loadDate = function(url, method, params) {
    if (!method) {
        method = "GET";
    }
    if (window.XMLHttpRequest) {
        this.req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        this.req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (this.req) {
        try {
            var loader = this;
            this.req.onreadystatechange = function() {
                net.AjaxRequest.onReadyState.call(loader);
            }
            // 建立对服务器的调用
            this.req.open(method, url, true);
            // 如果提交方式为POST
            if (method == "POST") {
                this.req.setRequestHeader("Content-Type",
                        // 设置请求头
                        "application/x-www-form-urlencoded");
            }
            // 发送请求
            this.req.send(params);
        } catch (err) {
            this.onerror.call(this);
        }
    }
}

// 重构回调函数
net.AjaxRequest.onReadyState = function() {
    var req = this.req;
    var ready = req.readyState;
    if (ready == 4) {// 请求完成
        if (req.status == 200) {// 请求成功
            this.onload.call(this);
        } else {
            this.onerror.call(this);
        }
    }
}
// 重构默认的错误处理函数
net.AjaxRequest.prototype.defaultError = function() {
    alert("错误数据\n\n回调状态:" + this.req.readyState + "\n状态: " + this.req.status);
}

AjaxRequest.js

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ page import="java.sql.*" %>
<jsp:useBean id="conn" class="com.caiduping.core.ConnDB" scope="page"></jsp:useBean>
<ul>
<%
//获取公告信息
ResultSet rs=conn.executeQuery("SELECT title FROM tb_bbsInfo ORDER BY id DESC");
if(rs.next()){
    do{
        out.print("<li>"+rs.getString(1)+"</li>");
    }while(rs.next());
}else{
    out.print("<li>暂无公告信息!</li>");
}
%>

</ul>

getInfo.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<script language="javascript" src="JS/AjaxRequest.js"></script>
<script language="javascript">
/******************错误处理的方法*******************************/
function onerror(){
    alert("您的操作有误!");
}
/******************实例化Ajax对象的方法*******************************/
function getInfo(){
    var loader=new net.AjaxRequest("getInfo.jsp?nocache="+new Date().getTime(),deal_getInfo,onerror,"GET");
}
/************************回调函数**************************************/
function deal_getInfo(){
    document.getElementById("showInfo").innerHTML=this.req.responseText;
}
window.onload=function(){
    getInfo();    //调用getInfo()方法获取公告信息
    window.setInterval("getInfo()", 1000);    //每隔1秒调用一次getInfo()方法
}
</script>

<title>实时显示公告信息</title>
</head>
<body>
<div style="border: 2px solid;height: 350px; width:350px;padding: 5px;color:#FF0000">
    <marquee direction="up" scrollamount="3">
        <div id="showInfo"></div>
    </marquee>
</div>
</body>
</html>

index.jsp

run:

时间: 2024-12-08 16:29:16

Ajax之数据连接信息捕获的相关文章

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

web爬虫讲解—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有这条新闻,可以看到源文件里没有这条信息,这种情况爬虫是无法爬取到信息的 那么我们就需要抓包分析了,启动抓包软件和抓包

如何去除AJAX收到数据中包含的html页面数据

问题: 如下代码所示,我用AJAX收到来自url: 'kzkj_check.jsp',返回的数据msg,总是包含页面的html数据,可是我只想要我返回的数据“false”, $.ajax({ url: 'kzkj_check.jsp', async:false, data: 'un='+ $('#userName').val() +'&pw=' + $('#passWord').val(), type: "get", success: function(msg){ if(msg

D3数据连接:进入

引言:数据连接是D3中的面包和黄油.D3不提供制图的基础函数,相反,它靠的是数据连接.数据连接可以让页面元素进入网页,一旦进入,可以修改.更新及退出.本文将主要介绍"进入"部分.本文选自<图说D3:数据可视化利器从入门到进阶>. 什么是数据连接 顾名思义,数据连接肯定是将数据和某些东西连接起来.这些东西是网页上的一个或一组--< rect>.< circle>.< div>等所有值得怀疑的常见元素.具体一点,就是这些常见元素的一个D3选择

第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

第三百三十四节,web爬虫讲解2-Scrapy框架爬虫-Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻标题和rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有

帆软报表学习之数据连接

帆软报表FineReport中数据连接的JDBC连接池属性问题 连接池原理 在帆软报表FineReport中,连接池主要由三部分组成:连接池的建立.连接池中连接使用的治理.连接池的关闭.下面就着重讨论这三部分及连接池的配置问题. 1. 连接池原理 连接池技术的核心思想,是连接复用,通过建立一个数据库连接池以及一套连接使用.分配.治理策略,使得该连接池中的连接可以得到高效.安全的复用,避免了数据库连接频繁建立.关闭的开销. 另外,由于对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的

如何实现MindManager数据库导入数据连接

思维导图有时候也是需要数据来进行补充支持,对于MindManager思维导图来说,与数据库的链接使得功能更为强大,那么在MindManager数据库中又是如何导入数据呢. 一个数据库连接到数据源(Mindjet的CSV文件的数据库或文件夹).您可以浏览数据源和你的导图来进行内容的添加. 添加数据库连接后,在打开的窗口中,选择连接类型,你可以连接到下面的数据库类型: 微软Access 微软Excel 微软SQL服务器 MySQL服务器 逗号分隔值(CSV文件的文件夹中的每个文件作为一个表) 而且您

COMET 异步通知服务器关闭数据连接实现思路

在小编络络 COMET实践笔记一文中注意事项中有这么一段话 使用长连接时, 存在一个很常见的场景:客户端需要关闭页 面,而服务器端还处在读取数据的阻塞状态,客户端需要及时通知服务器端关闭数据连接.服务器在收到关闭请求后首先要从读取数据的阻塞状态唤醒,然后释放为 这个客户端分配的资源,再关闭连接.所以在设计上,我们需要使客户端的控制请求和数据请求使用不同的 HTTP 连接,才能使控制请求不会被阻塞.在实现上,如果是基于 iframe 流方式的长连接,客户端页面需要使用两个 iframe,一个是控制

AJAX POST数据中有特殊符号导致数据丢失的解决方法

使用Ajax传送数据时,当数据中存在加号(+).连接符(&)或者百分号(%)时,服务器端接收数据时会丢失数据.分析Ajax传送数据的格式与Javascript的语法: 1. "+"号:JavaScript解析为字符串连接符,所以服务器端接收数据时"+"会丢失变空格. 2. "&"号:JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失变空格. 解决方法是通过正则表达式进行编码替换(假设pos