动态网页从数据库取信息,然后展示。


把数据库的驱动放在bin目录下。
通过servlet 读取数据库的内容,生成session,然后跨页面传给展示页。
package src;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class aaa*/
@WebServlet("/aaa")
public class aaa extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public aaa() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//response.getWriter().append("Served at: ").append(request.getContextPath());//1.导入jar包//2.注册驱动//Class.forName("com.mysql.jdbc.Driver");try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e2) {// TODO Auto-generated catch blocke2.printStackTrace();}//3.获取连接Connection con = null;try {con = DriverManager.getConnection("jdbc:mysql://mysql.sqlpub.com:3306/huangjin","laocooon","fc12f7a5215e8e0a_");} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}//4.获取执行者对象Statement stat = null;try {stat = con.createStatement();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}//5.执行sql语句,并且接收结果String sql = "SELECT * FROM MonthlySorted";ResultSet rs = null;try {rs = stat.executeQuery(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}//6.处理结果String i1="",i2="",i3="";try {while(rs.next()) {i1+="'"+rs.getString(1)+"',";i2+="'"+rs.getString(2)+"',";i3+="'"+rs.getString(3)+"',";}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}i1=i1.substring(0,i1.length()-1);//去掉最后一个逗号i2=i2.substring(0,i2.length()-1);//去掉最后一个逗号i3=i3.substring(0,i3.length()-1);//去掉最后一个逗号request.getSession().setAttribute("i1", i1);request.getSession().setAttribute("i2", i2);request.getSession().setAttribute("i3", i3);//7.释放资源try {con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {stat.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}//PrintWriter out = response.getWriter(); //out.println(request.getSession().getAttribute("i1"));//out.println(request.getSession().getAttribute("i2"));//out.println(request.getSession().getAttribute("i3"));}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
此页面作了两件事, 一就是通过<iframe src="./aaa" class="hidden"></iframe> 执行 aaa,获取数据,二是显示数据。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%String i1=(String)session.getAttribute("i1");String i2=(String)session.getAttribute("i2");String i3=(String)session.getAttribute("i3");%> <!DOCTYPE html>
<html>
<head><title>气温图表</title><script src="https://cdn.jsdelivr.net/npm/chart.js"></script><style>#myChart{width:300px;height: 300px;}.hidden {display: none;}</style>
</head>
<body>
<iframe src="./aaa" class="hidden"></iframe> <canvas id="myChart"></canvas><script>var tempData = {labels: [<%=i1%>],datasets: [{label: "最高气温",backgroundColor: "rgba(255,0,0,0.5)",borderColor: "red",borderWidth: 1,data: [<%=i2%>]},{label: "最低气温",backgroundColor: "rgba(0,0,255,0.5)",borderColor: "blue",borderWidth: 1,data: [<%=i3%>]}]};var tempOptions = {responsive: true,maintainAspectRatio: false,scales: {yAxes: [{ticks: {beginAtZero: true}}]}};var ctx = document.getElementById("myChart").getContext("2d");var myChart = new Chart(ctx, {type: "bar",data: tempData,options: tempOptions});</script>
</body>
</html>
相关文章:
动态网页从数据库取信息,然后展示。
把数据库的驱动放在bin目录下。 通过servlet 读取数据库的内容,生成session,然后跨页面传给展示页。 package src;import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSe…...
单片机学习3——数码管
数码管,根据内部结构,可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点,共计8段。因此,我们对它编程的时候,刚好是用一个字节。 数码管的显示方式: 1)静态显示; 2&…...
数据库表结构导出成Excel或Word格式
前言 该工具主要用于导出excel、word,方便快速编写《数据库设计文档》,同时可以快速查看表的结构和相关信息。 本博客仅作记录,最新源码已经支持多种数据库多种格式导出,有兴趣的可移步源码作者地址:https://gitee.co…...
School training competition ( Second )
A. Medium Number 链接 : Problem - 1760A - Codeforces 就是求三个数的中位数 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std; typedef long long LL; const int N 2e510;inline void …...
深度解析 Docker Registry:构建安全高效的私有镜像仓库
文章目录 什么是Docker Registry?Docker Hub vs. 私有RegistryDocker Hub:私有Registry: 如何构建私有Docker Registry?步骤一:安装Docker Registry步骤二:配置TLS(可选)步骤三&…...
leetcode 不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5 示例 2: 输入:n 1 输出:…...
通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul
文章目录 通俗易懂的spring Cloud一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七…...
大数据预处理技术
文章目录 前言 大数据技术成为前沿专业 也是现在甚至未来的朝阳产业,大数据有分别是 数据预处理 数据存储 大数据处理和分析 数据可视化 部分组成 ,大数据行业有数据则称王,大数据的核心是数据本身 怎么获取有价值的数据呢?本章讲…...
跳表的学习记录
跳表(Skip List)是一种数据结构,它通过在多个层次上添加额外的前向指针来提高有序数据的搜索效率。跳表与其他常见的有序数据结构(如二叉搜索树、平衡树如AVL树和红黑树、B树等)相比,具有其独特的优缺点&am…...
电子学会C/C++编程等级考试2022年09月(二级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:统计误差范围内的数 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数。 时间限制:5000 内存限制:65536输入 输入包含三行: 第一行为N,表示整数序列的长度(N <= 100); 第二行为N个整数,整数之间以一个空格分…...
如何使用nginx部署静态资源
Nginx可以作为静态web服务器来部署静态资源,这个静态资源是指在服务端真实存在,并且能够直接展示的一些文件数据,比如常见的静态资源有html页面、css文件、js文件、图片、视频、音频等资源相对于Tomcat服务器来说,Nginx处理静态资…...
lua的gc原理
lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前的5.3.4版本的Lua源码,希望对Lua的GC算法有一个较为详尽的探讨。 L…...
redis作为缓存详解
目录 前言: 为什么说关系型数据库性能不高 如何提高MySQL并发量 缓存更新策略 定期更新 实时更新 内存淘汰策略 Redis内置的淘汰策略 缓存常见问题 缓存预热 缓存穿透 缓存雪崩 缓存击穿 前言: 对于缓存的理解,缓存目的就是为了…...
231127 刷题日报
这周值班。。多少写道题吧,保持每天的手感。老婆给买了lubuladong纸质书,加油卷。 1. 131. 分割回文串 写个这个吧,钉在耻辱柱上的题。 为啥没写出来: 1. 递归树没画对 把树枝只看做是1个字母,而且不清楚树枝和节点…...
【Linux】vim-多模式的文本编辑器
本篇文章内容和干货较多,希望对大家有所帮助👍 目录 一、vim的介绍 1.1 vi 与 vim的概念1.2 Vim 和 Vi 的一些对比 二、vim 模式之间的切换 2.1 进入vim2.2 [正常模式]切换到[插入模式]2.3 [插入模式]切换至[正常模式]2.4 [正常模式]切换至[底行模式…...
Ubuntu 启用 root 用户
在启用 root 用户之前,我们先来了解一下, ubuntu 命令的组成。 打开 ubuntu 的终端,现在的命令行是由 topeetubuntu:~$ 这几个字母组成,那么这几个字母都代表 什么意思呢? topeet …...
手摸手Element-ui路由VueRoute
后端WebAPI准备 https://router.vuejs.org/zh/guide/ https://v3.router.vuejs.org/zh/installation.html <template><el-table:data"tableData"style"width: 100%":row-class-name"tableRowClassName"><!-- <el-table-colum…...
探究Kafka原理-5.Kafka设计原理和生产者原理解析
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理🔥如果感觉博主的文章还不错的话,请ὄ…...
浅谈C#在unity应用中的工厂模式
文章目录 前言简单工厂模式工厂方法模式抽象工厂模式Unity实战 前言 工厂模式是一种创建型设计模式,它提供了一种将对象的实例化过程封装起来的方法,使得客户端代码不必直接依赖于具体类。这有助于降低代码的耦合度,提高代码的可维护性和可扩…...
卷积神经网络(Inception-ResNet-v2)交通标志识别
文章目录 一、前言二、前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)2. 导入数据3. 查看数据 二、构建一个tf.data.Dataset1.加载数据2. 配置数据集 三、构建Inception-ResNet-v2网络1.自己搭建2.官方模型 五、设置动态学习率六、训练模型七、模型评…...
Azure DevOps 自托管 Agent 如何用 Service Principal 安全接入 Azure
Azure DevOps 使用服务主体配置自托管代理配置指南1. 概述2. 在 Azure AD 中创建服务主体 (SP)3. 授予 Azure DevOps 权限3.1. 组织层级:用户身份与访问级别3.2. 组织层级:Agent pools管理员3.3. 在 Linux VM 上安装和配置代理3.4. 启动并设置为系统服务…...
Java 性能优化最佳实践:构建高性能的 Java 应用
Java 性能优化最佳实践:构建高性能的 Java 应用 别叫我大神,叫我 Alex 就好。 一、引言 大家好,我是 Alex。性能优化是 Java 开发中非常重要的一个环节,它直接影响到应用的用户体验和资源利用效率。在当今竞争激烈的市场环境中&a…...
G-Helper技术解析:华硕笔记本硬件控制框架与轻量化实现方案
G-Helper技术解析:华硕笔记本硬件控制框架与轻量化实现方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...
如何高效管理多平台网盘文件:LinkSwift直链获取工具深度解析
如何高效管理多平台网盘文件:LinkSwift直链获取工具深度解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …...
如何用Dism++解决Windows系统维护难题:高效全面的实用指南
如何用Dism解决Windows系统维护难题:高效全面的实用指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Windows系统使用一段时间后,往往…...
vue3 中路由 vue-router 的使用
理解 createRouter、createWebHistory 组合式 API 中的 useRoute、useRouter的使用createRouter 的作用 功能:创建一个 Vue Router 实例,管理应用的路由跳转、历史记录、导航守卫等。 参数:接收一个配置对象,核心属性:…...
Fish Speech 1.5新手必看:一键部署,轻松实现文本转语音
Fish Speech 1.5新手必看:一键部署,轻松实现文本转语音 1. 认识Fish Speech 1.5 Fish Speech 1.5是由Fish Audio开源的新一代文本转语音(TTS)模型,它基于LLaMA架构与VQGAN声码器,支持零样本语音合成。这意…...
OpenClaw技能开发入门:为Phi-3-vision-128k-instruct编写图片转Markdown插件
OpenClaw技能开发入门:为Phi-3-vision-128k-instruct编写图片转Markdown插件 1. 为什么需要这个技能 上周整理技术文档时,我遇到了一个典型痛点:需要将十几张包含代码片段的截图转换成可编辑的Markdown格式。手动转录不仅耗时,还…...
Arduino MKR IoT Carrier 库底层控制与工程实践指南
1. Arduino MKR IoT Carrier 库深度解析:面向嵌入式工程师的底层控制指南 Arduino MKR IoT Carrier 是专为 MKR 系列开发板(如 MKR WiFi 1010、MKR NB 1500、MKR GSM 1400 等)设计的硬件抽象层库,其核心目标并非提供通用传感器驱…...
别再为CUDA版本发愁了!手把手教你用Anaconda+PyCharm在Windows上搞定YOLOv11完整开发环境
从零搭建YOLOv11开发环境:Windows下的CUDA避坑指南与EMA注意力实战 刚接触计算机视觉的新手们,是否曾在配置深度学习环境时被CUDA版本冲突、PyTorch安装失败等问题折磨得焦头烂额?本文将带你用Anaconda和PyCharm在Windows系统上搭建一个稳定…...
