最近做完了一个图书系统的增删改查,想着来总结一下这几个月的所学内容。

一.首先你需要在电脑上安装上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之连接数据库的更多相关文章

  1. ubuntu16.04环境下在docker上部署javaweb项目简单案例

    因为一些原因,接触到了docker,经过一番研究,总算是有了一些自己的看法,有什么不对的地方,希望多多指教. 废话不多说,首先我这里使用的虚拟机安装的是ubuntu16.04版本,其他版本应该也可以. ...

  2. 练习JavaWeb连接数据库

    1.添加jar包. 建立动态java项目,在Web-INF文件夹下的lib文件夹里添加jar包. 区别:java中添加的jar包需要添加构建路径,而javaWeb中添加的jar不需要构建路径,自动添加 ...

  3. javaweb连接数据库并完成增删改查

    一.连接数据库 1.mysql数据库的安装和配置 在网上找到了篇关于mysql的安装详细说明,供读者自己学习 https://www.jb51.net/article/23876.htm 2.mysq ...

  4. 传智播客JavaWeb day10-jdbc操作mysql、连接数据库六大步骤

    第十天主要讲了jdbc操作mysql数据库,包括连接数据库六大步骤(注册数据库驱动.获得连接对象connetion.生成传输器stament.执行查询获得ResultSet.遍历结果集.关闭资源).介 ...

  5. 用javaweb连接数据库用javabean、severlet实现增删改查

    样 很重要的一点是建立数据库的连接 数据库是一切操作的前提 不管是增加 删除 修改 查询 都需要调用数据库连接程序 再就是java的类的编写  写完类后需要对其进行增删改查方法的 编写 这是dao层的 ...

  6. javaWeb 数据库连接池连接数据库

    需要的公共jar包 mysql-connector-java-5.0.8-bin.jar(mysql数据库)   ojdbc14.jar(oracle数据库) A.DBCP 需要jar包: commo ...

  7. javaweb登录界面连接数据库

    实验关键截图 数据库界面 建表 2.登录界面 登陆失败 5 注册页面 5 注册成功 数据库截图

  8. Javaweb连接数据库

    在JSP中使用JDBC驱动连接mysql数据库. 1: 下载mysql的Java连接程序 2: 解压目录下的mysql-connector-java-5.0.24-bin.jar文件就是连接MySql ...

  9. JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)

    一.数据库db_01   表usert   字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp <script type="text/j ...

随机推荐

  1. LeetCode-023-合并K个升序链表

    合并K个升序链表 题目描述:给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链 ...

  2. 怎么在linux上安装部署jenkins

    怎么在linux上安装部署jenkins 作为一个非科班出身自学的小白,踩过很多的坑,特此留下记录 以下在虚拟机上示例 系统:linux(centos7) 操作方式:xshell连接终端操作 教程之前 ...

  3. Jmeter-根据负载计算并发用户实际案例

    业务场景 假设公司领导现在给你分配了一个性能测试需求如下: 1:公司有1000人在上班时间段会登录平台进行打卡操作,可能会登录打卡多次2:业务高峰时间段在8:00-8:30,半小时3:需要保证90%用 ...

  4. C/C++ 大型工程工具链搭建

    一.配置环境要求 C/C++ 编译器 此项有系统区别,如果是 Windows 平台,那么可以下载 VS2022 社区版,它自带 MSVC 编译器.如果嫌它太笨重,也可以直接下载 MSVC 再发行组件. ...

  5. 能动的电脑配件「GitHub 热点速览 v.22.11」

    看到这个标题就知道硬核的 B 站 UP 主稚晖君又更新了,本次带来的是一个造型可爱的小机器人.除了稚晖君这个一贯硬核的软硬件项目之外,本周也有很多有意思的新项目,像 Linux 服务监控小工具 Ray ...

  6. laravel 7 xlsx 数据导入至 数据库

    网址: https://learnku.com/articles/32400 1:安装插件 环境要求 PHP: ^7.0 Laravel: ^5.5 安装方式 composer require maa ...

  7. 对象中的apply&call

    显式绑定法 apply/call(); 通过显式绑定法可以使用另一个对象中的方法 apply/call()都是JS预定义的方法, 他们都可以用于将一个对象作为参数调用对象方法 FOR example ...

  8. [源码解析] TensorFlow 分布式环境(1) --- 总体架构

    [源码解析] TensorFlow 分布式环境(1) --- 总体架构 目录 [源码解析] TensorFlow 分布式环境(1) --- 总体架构 1. 总体架构 1.1 集群角度 1.1.1 概念 ...

  9. CF1228E题解

    设 \(f_{i,j}\) 为恰好 \(i\) 行 \(j\) 列不满足条件的矩阵个数, \(g_{i,j}\) 为钦定 \(i\) 行 \(j\) 列不满足条件的矩阵个数. 容易得到: \[g_{x ...

  10. PO模式在selenium自动化测试框架有什么好处

    PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式,使用这种模式后,可以有效的提升代码的复用能力,并且让自动化测试代码维护起来更加方便. PO模式的全称叫page object model( ...