一.连接数据库

1、mysql数据库的安装和配置

在网上找到了篇关于mysql的安装详细说明,供读者自己学习

https://www.jb51.net/article/23876.htm

2、mysql的基本操作

找到了篇介绍MySQL的基本操作的文章,简单易懂,可以很快的学会

http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d22

3、创建数据库表

建议大家下载一些MySQL的可视化工具如SQLyog,navicat等相应的教程都可以在网上找到,就不在此和大家一一说明,在此以SQLyog为例。

打开SQLyog软件,打开该软件后,会弹出以下画面,点击继续。

进入链接配置界面,点击上方的New…按钮,输入链接名称创建一个链接

之后在配置界面输入链接密码。此密码就是在安装mysql时设置的密码。

输入密码后,点击连接,如果信息无误,则进入主界面。如下所示

创建数据库,在左侧现实数据库的区域,点击右键,选择“创建数据库”

输入数据库名称,字符编码选择UTF-8,然后点击创建,则在左侧现实出来了刚刚创建的数据库。

4、下载数据库对应的jar包并导入

在网上下载JDBC驱动然后导入,使用JDBC需要在工程中导入对应的jar包。数据库与JDBC包的对应关系可以参考各种数据库对应的jar包、驱动类名和URL格式。在Eclipse下的导入方法:

在工程的图标上右击,选择”Properties”,在”Java Bulid Path”中选择”Add External JARs…”,选择下载并解压后获得的jar包。

如果对MySQL进行操作,这时下面的import就不会报错了:

importcom.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;

importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;

以上三句导入语句可用import java.sql.*代替

二.实现增删改查

1、准备工作

1:test01文件夹(里面有所需的页面资源),我完成的是在里面添加增删改查操作

2:myeclipse(版本没什么要求)  eclipse也行

3:数据库 MySQL

4:需要了解到的知识点:

servlet

EL与JSTL表达式

项目的基本框架搭建(javaweb经典三层框架)

5:在myeclipse中建立对应的包结构

2、项目的基本框架搭建

所谓三层框架分别为表述层(WEB层)、业务逻辑层()、数据访问层()。

web层(action):包含JSP和Servlet等与web相关的内容,负责与浏览器的响应和请求;

业务层(service):只关心业务逻辑;

数据层(dao):封装了对数据库的访问细节,数据操作类;

关系:web层依赖业务层    业务层依赖数据层(这个关系很重要)

ps:除了以上三层框架是我们在写一个javaweb项目必须的外,还需要一个实体类(entity)。

3、实现数据库的连接

需要在MySQL中创建所需数据库,并将表建好。

在dao下新建一个DBConn类用来处理对数据进行连接。 这是MySQL的连接方式

packagedao;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;public classDBUtil {//eshop为数据库名称,db_user为数据库用户名db_password为数据库密码

public static String db_url = "jdbc:mysql://localhost:3306/eshop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT";public static String db_user = "数据库用户名";public static String db_password = "数据库密码";public staticConnection getConn() {

Connection conn= null;try{

Class.forName("com.mysql.cj.jdbc.Driver");

conn=DriverManager.getConnection(db_url, db_user, db_password);

System.out.println("连接成功");

}catch(Exception e) {

System.out.println("连接失败");

e.printStackTrace();

}returnconn;

}public static voidclose(Statement state, Connection conn) {if(state!=null) {try{

state.close();

}catch(SQLException e) {

e.printStackTrace();

}

}if(conn!=null) {try{

conn.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}public static voidclose(ResultSet rs, Statement state, Connection conn) {if(rs!=null) {try{

rs.close();

}catch(SQLException e) {

e.printStackTrace();

}

}if(state!=null) {try{

state.close();

}catch(SQLException e) {

e.printStackTrace();

}

}if(conn!=null) {try{

conn.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}

}

4、建立实体类

在entity包下创建School实体类(实体类中的对象对应数据库表中的字段数据)

packageentity;public classSchool{privateString classname;privateString classteacher;privateString classplace;publicString getclassname() {returnclassname;

}public voidsetclassname(String classname) {this.classname=classname;

}publicString getclassteacher() {returnclassteacher;

}public voidsetclassteacher(String classteacher) {this.classteacher=classteacher;

}publicString getclassplace() {returnclassplace;

}public voidsetclassplace(String classplace) {this.classplace=classplace;

}

}

5、实现增删改查方法

创建方法类,这里有两种方法

1:在dao包中创建一个SchoolDao接口,里面写增删改查的方法,再在dao中创建SchoolDaoImpl类来实现接口,并实现之中的方法。

SchoolDao接口:

packagedao;importjava.util.List;importentity.School;public interfaceSchoolDao {public booleanadd(School school) ;public Listselect();public booleanupdate(String classname,String classteacher,String classplace);public booleandelete(String classname);public Listselectclassname(String classname);

}

SchoolDaoImpl类(包含增删改查操作):

packagedao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importentity.School;public class SchoolDaoImpl implementsSchoolDao{

Connection conn=(Connection)DBUtil.getConn();

@Overridepublic booleanadd(School school) {boolean flag=false;try{

String sql="insert into school values('"+school.getclassname()+"','"+school.getclassteacher()+"','"+school.getclassplace()+"')";

PreparedStatement pstmt=conn.prepareStatement(sql);int i =pstmt.executeUpdate();

pstmt.close();

conn.close();if(i>0) {

flag= true;

}

}catch(SQLException e) {

e.printStackTrace();

}returnflag;

}

@Overridepublic Listselect(){

List list = new ArrayList();try{

String sql="select * from school";

PreparedStatement pstmt=conn.prepareStatement(sql);

ResultSet rs=pstmt.executeQuery();while(rs.next()) {

School school=newSchool();

school.setclassname(rs.getString("classname"));

school.setclassteacher(rs.getString("classteacher"));

school.setclassplace(rs.getString("classplace"));

list.add(school);

}

rs.close();

pstmt.close();

conn.close();

}catch(SQLException e) {

e.printStackTrace();

}returnlist;

}

@Overridepublic Listselectclassname(String classname){

List list = new ArrayList();try{

String sql="select * from school where classname=?";

PreparedStatement pstmt=conn.prepareStatement(sql);

pstmt.setString(1,classname );

ResultSet rs=pstmt.executeQuery();while(rs.next()) {

School school=newSchool();

school.setclassname(rs.getString("classname"));

school.setclassteacher(rs.getString("classteacher"));

school.setclassplace(rs.getString("classplace"));

list.add(school);

}

rs.close();

pstmt.close();

conn.close();

}catch(SQLException e) {

e.printStackTrace();

}returnlist;

}

@Overridepublic booleandelete(String classname) {boolean flag=false;try{

String sql="delete from school where classname='"+classname+"'";

PreparedStatement pstmt=conn.prepareStatement(sql);int i =pstmt.executeUpdate();

pstmt.close();

conn.close();if(i>0) flag = true;

}catch(SQLException e) {

System.out.println("删除失败");

e.printStackTrace();

}returnflag;

}public booleanupdate(String classname,String classteacher,String classplace) {boolean flag=false;try{

String sql="update school set classteacher='"+classteacher+"',classplace='"+classplace+"' where classname='"+classname+"'";

PreparedStatement pstmt=conn.prepareStatement(sql);int i =pstmt.executeUpdate();

pstmt.close();

conn.close();if(i>0)flag = true;

}catch(SQLException e) {

e.printStackTrace();

}returnflag;

}

}

2:在service包中创建StudentService类,在dao包中创建StudentDao类来实现StudentService类中的方法。(具体操作以后更新)

6、实现servelet和对应jsp页面

Servlet有两种方式创建,一种手工创建。另一种程序自动生成。前者自己创建java类,实现Servlet具体内容,然后需要去WEB_INF下的web.xml去配置servlet  . 而后者则直接由程序替我们配置好了Servlet

1:增

创建SchoolAddServlet

packageSchoolAddServlet;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.SchoolDao;importdao.SchoolDaoImpl;importentity.School;

@WebServlet("/SchoolAddServlet")public class SchoolAddServlet extendsHttpServlet {private static final long serialVersionUID = 1L;

@Overrideprotected voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

String classname=request.getParameter("classname");

String classteacher=request.getParameter("classteacher");

String classplace=request.getParameter("classplace");

School Subject=newSchool();

Subject.setclassname(classname);

Subject.setclassteacher(classteacher);

Subject.setclassplace(classplace);

SchoolDao sd= newSchoolDaoImpl();try{

sd.add(Subject);

response.sendRedirect(request.getContextPath()+ "/school.jsp");

}catch(Exception e){

System.out.println("添加失败");

e.printStackTrace();

}

}

}

schooladd.jsp页面部分

Insert title here

课程名称:任课老师:上课地点:

action=“SchoolAddServlet”为SubjectAddServlet在web.xml中的URL目录,即在Servlet中的主类名称

当在servlet中完成的操作需要获取页面表单等的数据时,需要在页面中指向对应的servlet。

2、删

创建SchoolDeleteServlet类

packageSchoolDeleteServlet;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.SchoolDao;importdao.SchoolDaoImpl;importentity.School;

@WebServlet("/SchoolDelete")public class SchoolDelete extendsHttpServlet {private static final long serialVersionUID = 1L;public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

doPost(request, response);

}

@Overrideprotected voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

String classname= request.getParameter("classname");/*String classteacher=request.getParameter("classteacher");

String classplace=request.getParameter("classplace");*/School school=newSchool();

school.setclassname(classname);/*school.setclassteacher(classteacher);

school.setclassplace(classplace);*/SchoolDao sd= newSchoolDaoImpl();try{

sd.delete(classname);

response.sendRedirect(request.getContextPath()+ "/school.jsp");

}catch(Exception e) {

System.out.println("删除失败");

e.printStackTrace();

}

}

}

schooldelete.jsp页面

Insert title here

课程名称:任课老师:上课地点:

3、改

创建SchoolUpdate

packageSchoolUpdate;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.SchoolDao;importdao.SchoolDaoImpl;importentity.School;

@WebServlet("/SchoolUpdate")public class SchoolUpdate extendsHttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

String classname=request.getParameter("classname");

String classteacher=request.getParameter("classteacher");

String classplace=request.getParameter("classplace");

SchoolDao sd= newSchoolDaoImpl();try{

sd.update(classname,classteacher,classplace);

response.sendRedirect(request.getContextPath()+ "/school.jsp");

}catch(Exception e){

System.out.println("更新失败");

e.printStackTrace();

}

}

}

schoolupdate.jsp页面

Insert title here

课程名称:任课老师:上课地点:

4、查

这里需要完成两个查询(查询返回列表;查询返回列表详细)

查询返回列表:

SchoolSelect类

packageSchoolSelect;importjava.io.IOException;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.SchoolDao;importdao.SchoolDaoImpl;importentity.School;

@WebServlet("/SchoolSelect")public class SchoolSelect extendsHttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

SchoolDao sd= newSchoolDaoImpl();

List list =sd.select();

request.setAttribute("list", list);

request.getRequestDispatcher("/schoolselect.jsp").forward(request, response);

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

doGet(request, response);

}

}

注意:当不需要页面的参数时,页面由servlet引出

转发(request.getRequestDispatcher().forward();)和重定向(response.sendRedirect();)区别:

(1).重定向的执行过程:Web服务器向浏览器发送一个http响应--》浏览器接受此响应后再发送一个新的http请求到服务器--》服务器根据此请求寻找资源并发送给浏览器。它可以重定向到任意URL,不能共享request范围内的数据。

(2).重定向是在客户端发挥作用,通过新的地址实现页面转向。

(3).重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址。

(4).转发过程:Web服务器调用内部方法在容器内部完成请求和转发动作--》将目标资源发送给浏览器,它只能在同一个Web应用中使用,可以共享request范围内的数据。

(5).转发是在服务器端发挥作用,通过forward()方法将提交信息在多个页面间进行传递。

(6).转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址。

schoolselect.jsp页面

Insert title here

<

课程名称 任课老师 上课地点
${u.classname} 查看

注意:

这里的顺序是,先访问的是SubjectListServlet,在转发到此页面,此页面的查看和删除又通过对应的servlet来实现对应的功能。

查询返回列表详细:

创建Schoolselectclassname

packageSchoolSelect;importjava.io.IOException;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.SchoolDao;importdao.SchoolDaoImpl;importentity.School;/*** Servlet implementation class SchoolSelectclassname*/@WebServlet("/SchoolSelectclassname")public class SchoolSelectclassname extendsHttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

SchoolDao sd= newSchoolDaoImpl();

List list = sd.selectclassname(request.getParameter("classname"));

request.setAttribute("list", list);

request.getRequestDispatcher("/schoolshow.jsp").forward(request, response);

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

doGet(request, response);

}

}

注意:

这个查询方法需要通过限制条件classname来查询,不然显示出来的是所有的数据

schoolshow.jsp页面

Insert title here

课程名称: ${u.classname }
任课老师: ${u.classteacher }
上课地点: ${u.classplace }

注意:

页面同样运用的是EL和jstl表达式

school.jsp主页面

Insert title here

课程基本信息管理系统

  • 课程信息录入
  • 课程信息修改
  • 删除课程信息
  • 查询课程信息

mysql升序nuul在最后,javaweb连接数据库并完成增删改查相关推荐

  1. mysql sqlsugar_.net core +mysqlSugar(最为简单的增删改查)

    首先建立.net Core API - empty 这个就不说了 然后创建新的Controller 记得添加路由 [Route("api/Users")] 然后在Nuget Pac ...

  2. java mysql分层_java-数据库连接,分层实现增删改查测试

    packagecom.zhidisoft.dao;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Resul ...

  3. javaweb简单的登录增删改查系统_国产化之路统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作...

    引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...

  4. mysql如何修改学生表_MySQL 详细单表增删改查crud语句

    MySQL 增删改查语句 1.创建练习表 这里练习表没有满足三范式 第一范式(又称 1NF):保证每列的原子性 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性.满足第一范 ...

  5. unity网络实战开发(丛林战争)-前期知识准备(011-c#连接数据库并实现增删改查以及sql注入问题)

    使用工具:VS2015,Mysql 使用语言:c# 作者:Gemini_xujian 参考:siki老师-<丛林战争>视频教程 继上一篇文章内容,这节课讲解一下数据库的前期连接准备以及通过 ...

  6. idea连接数据库,及增删改查

    1.首先使用win+r打开运行,输入services.msc打开服务,找到mysql,选择启动服务(Windows11可在搜索中查找到服务),如图所示: 2.在idea中成功创建项目后,点击左上方Fi ...

  7. 关于安卓版的eclipse连接数据库并誓言增删改查

        在安卓环境下连接数据库下面是主要代码极其作用: 1.编写 The Class类把课程表courses.db当做一个实体类,hashcode和equals这两个类是为了判断输入的查询内容和Exc ...

  8. springboot pom文件添加mysql组件_SpringBoot整合mybatis-plus+druid组件,实现增删改查

    前言 本篇文章主要介绍的是SpringBoot整合mybatis-plus,实现增删改查. GitHub源码链接位于文章底部. 建库建表 创建springboot数据库,创建t_user表,字段id主 ...

  9. java连接mysql实现增删改查_java连接数据库,实现增删改查操作

    一.前言 写这个文章的原因是为了巩固自己连接数据库步骤 希望对初次学习数据库的朋友有所帮助 二.MySQL数据库连接 数据库连接步骤加载驱动程序,获取数据库连接对象 2.1驱动jar包 2.2代码 p ...

最新文章

  1. RelativeLayout不能居中的解决的方法
  2. Golang代码实现HTTPs(HTTPS证书生成和部署)
  3. DWZ+Uploadify +JSON 多文件上传
  4. 在Visual Studio中构建启动时申请管理员权限的程序(UAC支持)
  5. 【深度学习】翻译:60分钟入门PyTorch(四)——训练一个分类器
  6. LeetCode 237. 删除链表中的节点
  7. Java购物车swing_JAVA课程设计--购物车
  8. java中怎么从键盘读取字符_java键盘读取字符
  9. 【Elasticsearch】Elasticsearch之集群角色类型
  10. eq相等 ne、neq不相等 EL表达式
  11. 我是如何从零基础自学到找到工作经过
  12. 60、剑指offer--把二叉树打印成多行
  13. 3U VPX板卡设计
  14. java digit_EditText在java代码中设置digits属性
  15. 收据模板 纯css+html
  16. 在虚拟机中安装雨林木风XP镜像的正确步骤
  17. mysql计算连续天数,mysql连续登录天数,连续天数统计
  18. 真实的感情---可是你没有
  19. 简单学JAVA-学好Java能做啥
  20. CNVD-2022-03672/CNVD-2022-10270:向日葵简约版/向日葵个人版for Windows命令执行漏洞复现及修复建议

热门文章

  1. [NOIp2016]天天爱跑步 线段树合并
  2. 严格单调递增与非严格之间的转换
  3. ELK学习总结(3-2)elk的过滤查询
  4. 日积月累系列之分页控件(js源码)
  5. 避免将属性的可见属性层次结构用作用户定义的层次结构中的级别
  6. redis系列-redis的持久化
  7. 利用JS+Ajax实现下拉列表无刷联动,及其相关
  8. android studio 安装apk失败,AndroidStudio安装apk时失败时提示INSTALL_PARSE_FAILED_NO_CERTIFICATES...
  9. mybatis3源码1-初始化
  10. DAY102 - Rest Framework(七)- 手动编写配置文件、分页器和版本控制