javaweb之连接数据库
最近做完了一个图书系统的增删改查,想着来总结一下这几个月的所学内容。
一.首先你需要在电脑上安装上mysql或者sql server(本文以mysql为例)
mysql官网:MySQL :: Begin Your Download
sql server官网:SQL Server 下载 | Microsoft
二.Bean层
Bean层为数据表对应的Java类,是封装数据的模型,比如添加课程系统,在前台提交的课程信息,后台会对应一个Course类,把课程的信息封装到Course中。在这里,我们写一个course.java。
1 package Bean;
2
3 public class Course {
4 //private类,私有方法公开用,安全
5 private String teachername;
6 private String place;
7 private String classname;
8 /*set和get用于设置和读取Java private变量的方法。
9 这样子外部程序就不会直接访问程序的变量。
10 只能通过set去设置值,用get去读取值。
11 有利于对外封装。防止外部程序随意修改我们的变量。*/
12 public String getClassname() {
13 return classname;
14 }
15 public void setClassname(String classname) {
16 this.classname = classname;
17 }
18
19 public String getTeachername() {
20 return teachername;
21 }
22 public void setTeachername(String teachername) {
23 this.teachername = teachername;
24 }
25 public String getPlace() {
26 return place;
27 }
28 public void setPlace(String place) {
29 this.place = place;
30 }
31 }
三.dao层
dao层叫数据访问层,全称为data access object,专门负责一些对数据库的访问,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查。此处为增,写一个daoCourse.java。
1 package dao;
2 import java.sql.Connection;
3 import java.sql.PreparedStatement;
4 import java.sql.SQLException;
5 import Bean.Course;
6 import util.DBUtil;
7
8 public class daoCourse {
9
10 public boolean add(Course n)
11 {
12 boolean f=false;
13 int a=0;
14 String sql="insert submitcourse(classname,teachername,place) values(?,?,?)";
15 try {
16 Connection conn=DBUtil.getConnection();
17 PreparedStatement pstmt=conn.prepareStatement(sql);
18 pstmt.setString(1,n.getClassname());
19 pstmt.setString(2,n.getTeachername());
20 pstmt.setString(3,n.getPlace());
21 a=pstmt.executeUpdate();
22 } catch (SQLException e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 }
26 if(a>0) f=true;
27 return f;
28 }
29 }
四.servlet层
servlet是一个java接口,其功能如下(1)创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。我们建立一个course_servlet.java。
(2)创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。
(3)与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。
package servlet; import java.io.IOException;
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; import Bean.Course;
import dao.daoCourse; /**
* Servlet implementation class course_servlet
*/
@WebServlet("/course_servlet")
public class course_servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
daoCourse gooddao=new daoCourse();
/**
* @see HttpServlet#HttpServlet()
*/
public course_servlet() {
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
doPost(request, response);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String teachername=request.getParameter("teachername");
String classname=request.getParameter("classname");
String place=request.getParameter("place");
Course n=new Course(classname,teachername,place);
gooddao.add(n);
request.setAttribute("message", "添加成功");
request.getRequestDispatcher("NewFile2.jsp").forward(request, response);
}
五.util层
util用于连接数据库,我们写一个DBUtil.java。
package util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class DBUtil {
public static Connection getConnection() {
//1.添加mysql的驱动jar包到项目中的WebContent/WEB-INF/lib //2.如何连接数据库?
Connection conn=null;
try {
//加载数据库jar包的驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接数据库
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/submitcourse?serverTimezone=UTC", "root", "123456");
System.out.println("连接成功!"); //3.如何操作数据库里的数据
//定义sql语句 //执行sql语句 //获取sql语句执行器 //处理结果 } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
DBUtil.getConnection();
}
public static void close(Connection connection ) {
try {
if (connection != null) {
connection.close();
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(PreparedStatement preparedStatement ) {
try {
if (preparedStatement != null) {
preparedStatement.close();
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(ResultSet resultSet ) {
try {
if (resultSet != null) {
resultSet.close();
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
六.写jsp

1.NewFile.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加课程</title>
</head>
<body>
<form action="course_servlet" method="post">
课程名称:<input type="text" id="classname" name="classname"><br>
教师姓名:<input type="text" id="teachername" name="teachername"><br>
教学地点:<input type="text" id="place" name="place"><br>
<input type="submit" value="添加">
</form>
</body>
</html>
2.NewFile2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){ %>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %> <h1>添加成功</h1> </body>
</html>
七.数据库表

八.运行结果




以上是关于课程添加并连接数据库所呈现的内容,接下来会继续给大家更新删改查。
javaweb之连接数据库的更多相关文章
- ubuntu16.04环境下在docker上部署javaweb项目简单案例
因为一些原因,接触到了docker,经过一番研究,总算是有了一些自己的看法,有什么不对的地方,希望多多指教. 废话不多说,首先我这里使用的虚拟机安装的是ubuntu16.04版本,其他版本应该也可以. ...
- 练习JavaWeb连接数据库
1.添加jar包. 建立动态java项目,在Web-INF文件夹下的lib文件夹里添加jar包. 区别:java中添加的jar包需要添加构建路径,而javaWeb中添加的jar不需要构建路径,自动添加 ...
- javaweb连接数据库并完成增删改查
一.连接数据库 1.mysql数据库的安装和配置 在网上找到了篇关于mysql的安装详细说明,供读者自己学习 https://www.jb51.net/article/23876.htm 2.mysq ...
- 传智播客JavaWeb day10-jdbc操作mysql、连接数据库六大步骤
第十天主要讲了jdbc操作mysql数据库,包括连接数据库六大步骤(注册数据库驱动.获得连接对象connetion.生成传输器stament.执行查询获得ResultSet.遍历结果集.关闭资源).介 ...
- 用javaweb连接数据库用javabean、severlet实现增删改查
样 很重要的一点是建立数据库的连接 数据库是一切操作的前提 不管是增加 删除 修改 查询 都需要调用数据库连接程序 再就是java的类的编写 写完类后需要对其进行增删改查方法的 编写 这是dao层的 ...
- javaWeb 数据库连接池连接数据库
需要的公共jar包 mysql-connector-java-5.0.8-bin.jar(mysql数据库) ojdbc14.jar(oracle数据库) A.DBCP 需要jar包: commo ...
- javaweb登录界面连接数据库
实验关键截图 数据库界面 建表 2.登录界面 登陆失败 5 注册页面 5 注册成功 数据库截图
- Javaweb连接数据库
在JSP中使用JDBC驱动连接mysql数据库. 1: 下载mysql的Java连接程序 2: 解压目录下的mysql-connector-java-5.0.24-bin.jar文件就是连接MySql ...
- JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)
一.数据库db_01 表usert 字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp <script type="text/j ...
随机推荐
- 用端口映射的办法使用矩池云隐藏的vnc功能
矩池云隐藏了很多高级功能待用户去挖掘. 租用机器 进入jupyterlab 设置vnc密码 VNC_PASSWD="userpasswd" ./root/vnc_startup.s ...
- Lua中如何实现类似gdb的断点调试—06断点行号检查与自动修正
前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性. 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行.我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功 ...
- HBase海量数据高效入仓解决方案
一.方案背景 现阶段部分业务数据存储在HBase中,这部分数据体量较大,达到数十亿.大数据需要增量同步这部分业务数据到数据仓库中,进行离线分析,目前主要的同步方式是通过HBase的hive映射表来实现 ...
- 关于SQL Server 各种安装失败均失败,报错“等待数据库引擎恢复句柄失败”的经验分享
最近安装SQL 2019遇到这个问题,试过自己合网上几乎所有办法,怎么都安装不上,最后在微软社区解决了,由于这个问题比较特殊,并且网上几乎没有正确的决绝方案,因此将我的解决过程及经验记录分享一下,也为 ...
- CacheManager Net Core Redis 缓存
using CacheManager.Core; using System; using System.Collections.Generic; using System.Text; namespac ...
- 【基础】tail命令查看日志
一.tail 命令介绍 tail 命令可以将文件指定位置到文件结束的内容写到标准输出. 如果你不知道tail命令怎样使用,可以在命令行执行命令tail --help就能看到tail命令介绍和详细的参数 ...
- C#编程基础之字符串操作
本文来源于复习基础知识的学习笔记.自用的同时希望也能帮到其他童鞋. 什么是编程语言? 计算机可以执行的指令.这些指令成为源代码或者代码 有什么用? 以人们可读可理解的方式编写指令.人们希望计算机执行指 ...
- 【Vulnhub练习】Billu_b0x
靶机说明 虚拟机难度中等,使用ubuntu(32位),其他软件包有: PHP apache MySQL 目标 Boot to root:从Web应用程序进入虚拟机,并获得root权限. 运行环境 靶机 ...
- 记一次Prometheus代理性能优化问题
最近有做一个Prometheus metrics代理的一个小项目,暂称为prom-proxy,目的是为了解析特定的指标(如容器.traefik.istio等指标),然后在原始指标中加入应用ID(当然还 ...
- J20航模遥控器开源项目系列教程(五)| 制作STM32F0接收机,8路PWM输出,SBUS输出,PPM输出 | 加密狗无线化,畅玩飞行模拟器
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J ...