网页部分第三次培训

本文深入讲解Servlet技术,一种用于开发Web应用的基础技术,并详细介绍了JDBC的使用方法,包括如何通过JDBC访问关系数据库,提供了从理论到实践的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网页第三次大培训

一、servlet是啥

1、介绍

Java servlet技术简称Servlet技术,是Java开发Web应用的底层技术。Servlet是一个Java程序,一个servlet应用有一个或多个servlet程序。 Servlet应用无法独立运行,必须运行在servlet容器中。Servlet容器将用户的请求传递给servlet应用,并将结果返回给用户。Tomcat就是一个servlet容器,Web用户通过浏览器可访问servlet应用,通常web浏览器又叫web客户端。

用简单的图来表示:
在这里插入图片描述

2、API

Servlet API 有以下四个java包:

  • javax.servlet
  • javax.servlet.http
  • javax.servlet.annotation
  • javax.servlet.descriptor

以上接口定义了servlet与servlet容器之间的契约。

大多数应用程序都要与HTTP结合起来使用,可以利用第二个包,使用时还要借助HttpServletRequestHttpServletResponse对象。

主要调用doGet、doPost、doHead等方法,其中doGetdoPost方法最常用。

具体方法可以查看 API文档
在这里插入图片描述

举个栗子
Request 接口里的一些方法:

  • getContentLength()
  • getContentType()
  • getParameter(String name)
  • getProtocol()
    在这里插入图片描述

二、第一个servlet应用

  • 新建工程如图,并配置好tomcat
    在这里插入图片描述
  • 找到tomcat的安装目录下的lib,将servlet-api.jar导入
    在这里插入图片描述
  • 继承HttpServlet类,写doGet和doPost方法
    在这里插入图片描述
  • 写doGet方法,写响应。
    在这里插入图片描述
  • 配置url,使之可以被访问到。以下两种方式都可以。
    在这里插入图片描述在这里插入图片描述
  • 来一波测试吧。
    在这里插入图片描述
  • 写请求。
    在这里插入图片描述
  • 再来一波测试吧。
    在这里插入图片描述

三、使用jdbc访问关系数据库

1、什么是关系型数据库?

关系数据库,是建立在关系模型基础上的数据库。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。
表是以行和列的形式组织起来的数据的集合。一个数据库包括一个或多个表。例如,可能有一个有关作者信息的名为 authors 的表。每列都包含特定类型的,如作者的姓氏。每行都包含有关特定作者的所有信息:姓名、住址等等。在关系型数据库当中一个表就是一个关系,一个关系数据库可以包含多个表。

2、如何访问关系数据库?

一组应用程序接口(一组类和一组方法);
一个程序过程:建立连接发送SQL语句处理结果;
设计关键:代码重用(一段代码访问不同的数据库)。
由此,我们引出jdbc这个概念。

3、jdbc简介

Java数据库连接(Java Database Connectivity:JDBC),Java运行平台的核心类库中的一部分,由一组Java类和接口组成,提供访问各种数据库的统一API。
不同具体数据库的访问针对这一组访问接口进行实现,这些不同的实现被称为对应数据库的"JDBC 驱动程序"。
应用程序开发人员无需关心具体数据库的“JDBC 驱动程序”的实现细节,只需在程序初始化的时候指定采用哪个“JDBC 驱动程序”即可,其后的数据库操作完全针对访问接口进行编程。

4、JDBC应用程序体系结构

在这里插入图片描述
使用JDBC的应用程序(黄色):针对JDBC接口进行编程,Java数据库应用程序开发者。
JDBC for DatabaseX(红色框):针对具体数据库DatabaseX实现这一组抽象的JDBC接口。
一组抽象的JDBC接口(绿色):JDK

5、JDBC应用程序编程步骤

5.1 实现步骤

(1)、装载数据库驱动驱动程序(只做一次)
(2)、建立数据库连接对象(Connection)
(3)、创建执行SQL的语句对象(Statement)
(4)、执行SQL语句,如果需要处理执行SQL语句的返回结果集,则处理SQL语句的返回的ResultSet对象
(5)、释放资源

5.2 具体实现过程

(1)装载数据库驱动程序类
JDBC可以调用Java数据库驱动程序和相应的数据库建立连接
方式1:Class.forName(驱动程序类名字符串);
推荐这种方式
其他方式暂不介绍。
例子:使用本地协议驱动连接SQL Server数据库
Class.forName(com.mysql.jdbc.Driver);
(2)建立连接(Connection)
使用address、用户名和密码创建数据库连接对象
语句

Connection conn = 
                 DriverManager.getConnection(addr, username, password);
address格式

JDBC:子协议:子名称://主机名(或IP):端口/数据库名;属性名=属性&…

例子

String addr = "jdbc:mysql://localhost:3306/esta?useUnicode=true&characterEncoding=utf8";
Connection conn=DriverManager.getConnection(addr, "sa", "xxx");

(3)创建执行语句对象(Statement),处理结果集

方法一:Statement接口
Statement st = conn.createStatement();

方法二:PreparedStatement接口(预编译的statement,防止SQL注入,建议尽量用PreparedStatement接口)
PreparedStatement ps = conn.prepareStatement(sql);

(Sql注入:statement可以看见sql语句的内容,防止有人利用这个漏洞进行攻击。)

(4).xxxStatement对象执行SQL的语句,处理结果集

//执行sql语句返回数据集(带查询参数)
String sql ="select * from BookInfo where bookId=?";
ps.setInt(1, 123);                           //设置查询参数(从1开始编号)
ResultSet rs=ps.executeQuery();     //执行SQL语句

//逐行访问数据集,输出到控制台
if(rs.next()==true){
	System.out.print( "bookId=" + rs.getInt("bookId") );
   System.out.println(",bookName=" + rs.getString("bookName") );
}

(5). 关闭数据库连接,释放资源
数据库连接(Connection)是非常稀有的资源,用完后必须马上释放,Connection的使用原则是尽量晚创建,尽量早的释放

语句
rs.close(); //关闭数据集
ps.close(); //关闭SQL语句对象
conn.close(); //关闭数据库连接对象

四、项目实战

例子:在控制台输出图书表的所有图书信息
1、先在数据库(由你的addr决定)中创建表BookInfo
在这里插入图片描述
在这里插入图片描述
2、过程
(1)新建一个java项目,名称为library;
(2)在lib下加入jar包;
(3)新建访问数据库的类BookInfoDao.java
(4)查询所有图书信息(BookInfoDao.java)
3、代码如下:

public class BookInfoDao{
public void queryBookInfos(){
try{
// 1.装载驱动程序类(返回com.mysql.jdbc.Driver对象)
 Class.forName("com.mysql.jdbc.Driver");

// 2.设置连接URL、用户名和密码,建立数据库连接
String addr = "jdbc:mysql://localhost:3306/esta?useUnicode=true&characterEncoding=utf8";
String username ="root";
String password = “   “;
Connection conn = DriverManager.getConnection(addr, username, password);
if(!conn.isClosed()){
				System.out.println("连接成功");
			}

// 3.建立SQL语句对象
Statement st = conn.createStatement();
// 4.执行SQL查询,返回数据集
ResultSet rs = st.executeQuery("select * from BookInfo");
//遍历数据集,输出到控制台
while (rs.next()==true) {
    System.out.print(rs.getRow()+"bookId="+rs.getInt("bookId"));
    System.out.println(" bookName="+rs.getString("bookName"));
       }
// 5.关闭数据库连接
conn.close();
      }catch(Exception e){
e.printStackTrace();
       }
   }
public static void main(String[] args) {
BookInfoDao dao = new BookInfoDao();
dao.queryBookInfos();
        }
  }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值