最近因为在上实训课,数据结构与算法的实训课,实训课结业是需要提交一个作业的,我当时选择了一个运动会计分系统的问题来写,(虽然后来有点后悔,这个里面完全没有用到多少的数据结构与算法的东西),为了完成这个项目,我选择用JavaEE写一个浏览器版本的。

建立数据库

  • 在这个过程中我最先接触的就是来连接数据库这一步,首先在本地开启数据库并连接:

  • 连接好数据库后建表以及给表赋值可以通过以下两种方式:

    1. 在该命令行上使用sql语句
    2. 使用MySQL的可视化软件等

在此展示以下已经建好的表:

Java连接数据库

在写这个项目的时候我用了一个简单的分层结构,(第一次使用这样的结构,有的地方改写该放在哪里真懵圈,这可能就是学习设计模式的重要性吧…)

在这个里面我首先建立了一个连接数据库的工具类,放在了Utils下面:
DBUtil:

package com.xhu.edu.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class DButil {public Connection conn;public Statement stat;public DButil() throws ClassNotFoundException, SQLException {// 加 连 域 执 放//加载驱动Class.forName("com.mysql.jdbc.Driver");//连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sport_match?useUnicode=true&characterEncoding=utf-8&useSSL=false", "root","********");//域stat = conn.createStatement();}public void close() throws SQLException {stat.close();stat = null;conn.close();conn = null;}
}

总结下来就是五个步骤: 加,连,域,值,放

  • 加载驱动

Class.forName(“com.mysql.jdbc.Driver”);

  • 连接

conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/sport_match”, “root”,
“*****”);

  • 获取数库的执行对象

stat = conn.createStatement();

  • 执行操作  执行SQL语句,sql语句这个字符串得自己写哈,(我是想通过调用这个类的时候来完成,所以这里没写),常用的方式:

    1. 执行Sql语句,返回执行的行数,并执行Sql语句更新数据库

    int count=stat.executeUpdate(sql);

    1. 执行Sql语句,返回查询的结果集

    ResultSet rs=stat.executeQuery(sql);

    可以得到迭代的方式遍历查询的结果:

    while(rs.next()){system.out.println("id"+rs.getInt(id)+"department"+rs.getString(2);
    }
    

    可以看到上面调用中所有的值都是查询并返回的。

  • 关闭连接(Connection和Statement对象)

conn.close();

stat.close();

使用Sevlet类来实现把数据返回给前端

新建一个JavaWeb项目

  • 在Web项目中的lib中加入MySQL驱动包(例如:mysql-connector-java-5.1.46.jar),并给其添加路径
  • 新建一个JavaBean

关于JavaBean,在我看来它就是一个简单的属性构造器,里面结合我们需要返回给前台的数据类型,构造了几个属性,并设置了set,get等方法,同时里面除开包含一个无参的构造方法之外,我们还可以定义其他的构造方法。

User:

package com.weily.cn;public class User {int id;String name;//普通的构造方法public User() {// TODO Auto-generated constructor stub}//set和get方法public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}//其他构造方法//(下面的Sevlet要用的)public User(int id,String name){this.id=id;this.name=name;}
}
  • 新建一个Servlet类
package com.weily.cn;import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;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 TestConnction*/
@WebServlet("/TestConnction")
public class TestConnction extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public TestConnction() {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/*** 在这里连接数据库并执行查询方法*/try {//加载驱动Class.forName("com.mysql.jdbc.Driver");//创建连接Connection conn=DriverManager.getConnection("jdbc:mysql:///sport_match","root","********");//通过连接创建一个语句对象,该对象来执行Sql语句Statement stat=conn.createStatement();//执行Sql查询语句,并接收查询的结果ResultSet rs = stat.executeQuery("select id,department from department_projects");//定义一个JavaBean的数组对象来接收遍历查询结果的值List<User> list=new ArrayList<User>();/*** 通过使用上面利用JavaBean定义的数组对象来接收我们遍历Sql语句得到的结果的返回值*/while(rs.next()){//在之前的JavaBean中定义一个构造函数可以给对象赋属性值User user=new User(rs.getInt(1), rs.getString(2));list.add(user);}//通过以下两种方法将list返回给前端并展示request.setAttribute("list", list);request.getRequestDispatcher("index.jsp").forward(request, response);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
  • 写一个简单的jsp页面,用上面Servlet请求访问的页面名
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!--jsp页面需导入下一列语句 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html><head><title>Hello,world!</title></head><body><table><tr><td><b>id</b></td><td><b>department</b></td></tr><!-- JSTL方式接受值 --><c:forEach var="user" items="${list}"><tr><td><c:out value="${user.id}"></c:out></td><td><c:out value="${user.name}"></c:out></td>    </c:forEach></table></body></html>
  • 打开浏览器访问

  • 可以查看数据库中的查询结果对比

使用Servlet来连接数据库并在前端展示相关推荐

  1. java的图片上传与前端展示实例(Servlet+Jsp)

    java的图片上传与前端展示实例(Servlet+Jsp) 内容前瞻 1.关于路径 2.前端图片上传与展示 3.后台获取并保存 环境 1.前端jsp 2.服务器tomcat 3.服务端servlet ...

  2. 一个简单的数据查询到前端展示总结

    前言 做了一个后台查询前端展示的小项目,背景是在前端才刚开始学的时候,以当时能力肯定还差点意思(hh,出自宋老师),当然结果就是面向百度编程啦.项目做完了,从开发到部署一个人搞定历时5天.也算是本人第 ...

  3. MySQL存储日志并使用Loganalyzer作为前端展示

    MySQL存储日志并使用Loganalyzer作为前端展示 为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主机服务的状态和所作出的操作,我们可以在较大型的网络架构中使用E ...

  4. [py]access日志入mysql-通过flask前端展示

    目录 pymysql组装sql入库日志 代码组织 将入库的日志通过flask前端展示 pymysql组装sql入库日志 pymysql模块的用法 采集这些指标(metirc)都是linux环境,会用到 ...

  5. 实战SSM_O2O商铺_42【前端展示】店铺列表页面View层的实现

    文章目录 概述 代码结构 shoplist.html shoplist.js shoplist.css common.js添加解析日期的公共方法 FrontEndController添加路由 联调测试 ...

  6. 实战SSM_O2O商铺_40【前端展示】首页轮播图和一级商铺View层的实现

    文章目录 概述 index.html index.js index.css Controller 调测 修复问题 头条图片展示修复 一级类别商铺图片展示修复 Github地址 概述 在完成了后端 实战 ...

  7. 实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现

    文章目录 概述 HeadLine Dao层 接口 映射文件 单元测试 HeadLine Service层 接口 实现类 单元测试 ShopCategory Dao层完善 映射文件完善 单元测试 Con ...

  8. django oracle 性能,4.利用Django在前端展示Oracle 状态趋势

    利用Django在前端展示Oracle 状态趋势 2017-12-15 Python 宅必备 开发环境 操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操 ...

  9. java生成二维码,并在前端展示。

    java生成二维码,并在前端展示,扫码实现下载功能. 后端生成二维码以流的形式 前端接收二维码并展示 后端生成二维码以流的形式 这是以流的形式展示二维码.当然也可以以文件的格式,文件格式就是Path ...

  10. 前端展示中实现批量标签动态生成

    前端展示中实现批量标签动态生成 使用过报表的小伙伴,经常会有条码打印.标签打印的需求,一两个标签还好处理,但很多时候我们可能需要的是几十.上百个内容的批量打印,如下图所示: 今天我们就来为大家介绍,如 ...

最新文章

  1. 关于如何在使用easyui的时候添加一个操作列的问题
  2. 异常:System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)
  3. python之禅中文-Python之禅与翻译之美
  4. xampp访问php显示空白,运行PHP项目显示空白
  5. 命令行批量截图Node脚本
  6. 【性能优化】之 表分析及动态采样
  7. java中map的put方法,Java TreeMap put()方法
  8. python采用编译型方式执行_Python程序的执行过程 解释型语言和编译型语言
  9. 《关键对话——从“心”开始,如何确定目标》读书笔记(三)
  10. 制作win10安装u盘_最简单的Win10系统安装U盘制作方法
  11. 单麦克纳姆轮受力分析
  12. jquery 把元素移动到另外一个元素里面
  13. 微信小程序导航:官方文档+精品教程+demo集合(6月12日更新)
  14. 拿破仑,技术大牛晋级管理之后的困境
  15. python-字符串练习1
  16. 遭遇盗取网络游戏帐号木马等
  17. 假冒网站引发多重安全风险 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
  18. 索引超出数组元素的数目(1)
  19. XAML C# WPF
  20. DAY 09 Python 操作Excel

热门文章

  1. 什么是BS,BS和CS的区别有哪些:
  2. 浅解一下BS和CS的区别
  3. 抖音Vlog必备1000+超强Premiere转场特效字幕动画LUT预设PR模板包 V6 (包含音效)
  4. bme280(HAL库)
  5. 扫码下载apk文件浏览器会直接打开并显示乱码的问题
  6. 安装配置管理 之 NVIDIA nForce Linux Drivers 集成声网卡和声卡的安装说明
  7. SmallPDF安装
  8. 利用gflags自定义标志的使用方法
  9. 众为兴SCARA四轴机械臂编程(二)——基于硬接线替代Modbus通讯
  10. seaweedfs学习