学习笔记是参考的how2j
本章笔记的目的是介绍如何与JDBC结合,通过servlet对数据库中的数据进行增、删、改、查。
一、前期准备
1、新建一个Dynamic Web Project 步骤为:file-new-other-Dynamic Web Project-next-项目名为【servlet_CURD】-finish,配置如下图。
2、新建三个包,bean、dao,在三个包中分别创建类Hero、HeroDAO,配置如下图。
3、右键项目名,新建一个文件夹lib,在电脑中找到tomcat目录D:tomcat7-8080-eclipselib下的servlet-api.jar复制到刚刚建立的lib文件夹中。
同时在电脑中找到自己的mysql-jdbc驱动包,比如我的是mysql-connector-java-5.1.39-bin.jar放到项目目录WEB-INF/lib目录下。
然后对刚刚复制到项目中的两个jar包执行build path-add build to path,此时整个项目的结构如下:
4、在Hero类中写程序
我们使用的数据库中的数据是这样的,每个英雄对应4个属性,id、name、hp、damage
因此要在Hero类中,定义4个属性,并添加setter和getter方法。
package
5、在HeroDAO类中写程序
这个类中主要提供对数据库进行操作的方法,比如增删改查。当然这个类只是对数据库进行操作,如果要想通过在网页上执行这些操作,还需要其他的步骤,后面会讨论。
程序如下,带有注释:
package
6、想要从数据库中进行数据的操作,必须有对应的数据库和表,比如从上面程序中可以看出来,我的数据库名是how2j,且这个数据库下有一个表叫做hero;如果没有的话可以新建一个how2j数据库,然后再新建一个表;
#先执行这一句新建数据库
二、Servlet查询
上面做了一些准备工作,基于上面的工作,我们这一节主要目的是把hero表中的所有英雄信息都显示到网页上。
1、新建包servlet且在包内新建类HeroListServlet,然后在类中写程序如下:
package
2、配置xml文档
在WEB-INF下新建web.xml文档,然后在里面写入配置信息,如下。
<?xml version="1.0" encoding="UTF-8"?>
3、启动tomcat
项目名右键-run as-run on server-next-add all-finish
然后在新出现的页面中输入网址http://localhost:8080/servlet_CURD/listHero,可以看到在网页上显示了从数据库中查询到的数据。
三、Servlet添加数据
本节目的是在网页上输入一个新英雄的数据,添加到数据库中,并在网页上显示添加后的所有数据。
1、在WebContent目录下新建addHero.html
注意,一定要在WebContent目录下建立文件,否则按照下面的步骤,最后可能访问不到这个网页。
这个html文件主要负责在网页上显示出来输入框,和提交按钮。
写入如下程序:
<!DOCTYPE html>
2、新建类HeroAddServlet
这个类的作用是,获得addHero.html输入的数据,新建一个Hero对象,并添加到数据库的表中。
package
3、运行项目
右键项目名-run as-run on server...
在弹出来的界面里面输入网址http://localhost:8080/servlet_CURD/addHero.html,在弹出来的网页中输入要添加的英雄的信息。
然后点击添加按钮,跳转到listHero界面,如下图,可以看到添加成功。
Servlet删除数据
1、修改HeroListServlet
原来访问listHero页面的显示如下,
现在想要在最右端增加一列delete,且delete在网页上是个超链,点击delete就可以删除对应的数据。
修改后的程序如下,被修改的地方已经添加了注释
package
然后右键项目名-run as-run on server...,在弹出来的界面输入网址http://localhost:8080/servlet_CURD/listHero,显示的界面如下,但是这个时候点击delete会报错,因为没有为超链delete指明跳转到什么地方,
2、编写HeroDeleteServlet类
这个类负责删除对应的数据,程序如下
package
3、配置web.xml
上面两部分完成之后,在web.xml文档中要指明在网页上点击delete后执行什么操作,在xml文档中添加以下程序
<servlet>
全部的xml文档如下
<?xml version="1.0" encoding="UTF-8"?>
4、重启tomcat,也就是右键项目名-run as-run on server...
在界面上输入网址http://localhost:8080/servlet_CURD/listHero,界面如下:
点击第一个delete,删除id为10的英雄信息,执行完删除操作后会跳转到listHero页面,如下,可以看到删除成功。
5、执行步骤解析
这个地方有点复杂,为了辅助理解,说明一下程序的执行步骤
Servlet更新数据
本节目标是,在listHero中再新增一列edit,edit是一个超链,点击edit就会跳转到一个信息输入界面,把对应英雄的信息进行更新
1、修改HeroListServlet
修改HeroListServlet主要是为了增加一列edit超链,程序如下:
package
当然这个时候,点击edit会报错,因为没有为超链制定任何操作。
2、新建类HeroEditServlet
下面为超链指定操作,一点击超链edit就会执行HeroEditServlet中的代码。
package
所以,点击一个edit之后,界面显示是这样的,会把这个英雄现有的信息先显示出来,这个时候点击更新会报错,因为虽然制定了点击【更新】会去执行updateHero的代码,但是updateHero还没有写,所以会报错。
3、编写HeroUpdateServlet
package
比如我们点击了id为6的英雄对应的edit,跳转到了编辑页面,输入了新的信息,比如
然后点击更新,可以看到跳转到新的页面,且信息被更新了