当前位置: 首页 > article >正文

基于Java Web的“使用Ajax实现无刷新实时显示公告信息”实验

1.实验目的

学习和掌握jQuery获取网页元素对象的格式。使用JDBC进行数据库的连接以及使用Statement对象执行SQL查询语句。掌握使用Properties类加载Properties文件中参数的方式。使用<jsp:UseBean>标签创建对象。使用$.get方法向服务器发送请求以及获取服务器中的数据。

2.实验所用方法

上机实践

3.实验步骤及截图

建立数据库表格info:

 

 

 

在web目录下创建index.jsp文件用来向服务器发送请求,并对服务器返回结果进行展示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>index</title>
  <script type="text/javascript"
          src="${pageContext.request.contextPath}/jquery-3.6.0.js"></script>
  <script language="JavaScript">
    function getInfo() {
      $.get("http://localhost:8080/chapter12/getInfo.jsp?nocache="+new  Date().getTime(),function (data) {
        $("#showInfo").html(data);
      });
    }
    $(document).ready(function () {
      getInfo();//调用getInfo()方法获取公告信息
      window.setInterval("getInfo()",600000);
    })
  </script>
</head>
<body>
<section>
  <marquee id="showInfo" direction="up" scrollamount="3">
  </marquee>
</section>
</body>
</html>

创建getInfo.jsp文件用于执行SQL语句并对查询结果进行输出:

<%@ page language="java" contentType="text/html;charset=UTF-8"
         pageEncoding="UTF-8" %>
<%@page import="java.sql.*" %>
<jsp:useBean id="conn" class="cn.itcast.dao.ConnDB"
             scope="page"></jsp:useBean>
<ul>
    <%
        ResultSet rs=conn.executeQuery("select title from info order by id desc");
        if(rs.next()){
            do{
                out.print("<li>"+rs.getString(1)+"</li>");
            }while (rs.next());
        }else{
            out.print("<li>暂无公告信息!</li>");
        }
    %>
</ul>

创建创建数据库请问文件ConnDB.java工具类:

package cn.itcast.dao;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class ConnDB {
    public Connection conn =null;
    public Statement stmt = null;
    public ResultSet rs = null;

    private static String propFileName= "connDB.properties";

    private static Properties prop=new Properties();

    private static String dbClassName ="";
    private static String dbUrl="";
    private static String user="";
    private static String pass="";

    static{
        try{
            //将Properties文件读取到InputStream对象中
            InputStream in=ConnDB.class.getResourceAsStream(propFileName);
            prop.load(in);
            dbClassName = prop.getProperty("DB_CLASS_NAME");
            dbUrl = prop.getProperty("DB_URL");
            user = prop.getProperty("user");
            pass = prop.getProperty("pass");
        }catch (Exception e){
            e.printStackTrace();                             //输出异常信息
        }
    }
    /**
     * 连接数据库
     */
    public  Connection getConection(){
        try{
            Class.forName(dbClassName).newInstance();

            conn = DriverManager.getConnection(dbUrl,user,pass);
        }catch (Exception ee){
            ee.printStackTrace();
        }
        if(conn==null){
            System.err.print("连接失败");
        }
        return conn;
    }
    /**
     * 执行查询
     */
    public ResultSet executeQuery(String sql){
        try{
            conn=getConection();
            stmt =conn.createStatement
                    (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

            rs =stmt.executeQuery(sql);
        }catch (SQLException ex){
            System.err.print(ex.getErrorCode());
        }
        return rs;
    }

    public void close(){
        try{
            if(rs!=null){
                rs.close();
            }
            if (stmt!=null){
                stmt.close();
            }
            if (conn!=null){
                conn.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

连接数据库部分的代码如下图所示

执行SQL语句的函数:

释放资源部分的代码如下图所示:

连接数据库的配置文件connDB.properties如下图所示:

从图中可知已经成功连接数据库查询到相应数据:

4.实验过程中出现的问题

.properties文件是ideal生成的文本文件,用于存储数据库连接等配置信息。在创建和编辑配置文件时,需要遵循特定的格式要求,并注意保护敏感信息的安全性和提高配置文件的可维护性。

5.实验心得

jQuery是一个快速、小巧、功能丰富的JavaScript库。它使得HTML文档遍历和操作、事件处理、动画和Ajax等任务变得更加简单。


http://www.kler.cn/a/447001.html

相关文章:

  • UE5 移植Editor或Developer模块到Runtime
  • 题海拾贝:力扣 86.分隔链表
  • Linux 文件系统目录结构及其简要介绍
  • CH340系列芯片驱动电路·CH340系列芯片驱动!!!
  • 【python虚拟环境安装】linux centos 下的python虚拟环境配置
  • 【Axure高保真原型】伸缩表单
  • Spring实例化的基本流程和Bean处理器
  • LeetCode 2545.根据第 K 场考试的分数排序:考察编程语言的排序
  • 现代 CSS 布局与响应式设计实战指南
  • asp.net多媒体教室管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
  • 使用Mac自带共享实现远程操作
  • TANGO与LabVIEW控制系统集成
  • [ESP]从零开始的Arduino IDE安装与ESP环境配置教程
  • HBase、Hive、Redis 和 MongoDB的对比
  • C语言的函数指针
  • linux-----文件命令
  • Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)
  • AdminJS - 集成 MySQL 的现代化管理面板开发指南
  • CSS3 实现火焰-小火苗效果
  • linux中大内核锁、互斥锁、信号量、完成变量、自旋锁区别
  • 【AIGC-ChatGPT进阶提示词-《动图生成》】怪物工厂:融合想象力与创造力的奇幻世界
  • vscode 使用说明
  • 四川托普信息技术职业学院教案1
  • 智能挂号系统设计典范:SSM 结合 Vue 在医院的应用实现
  • Windows下安装Rabbit MQ
  • 【线性代数】理解矩阵乘法的意义(点乘)