@TOC
前言
java入门须知的重要概念/名词/技术 等
一、Servlet
Servlet是Java Web开发中的一个核心组件,它是基于Java语言编写的服务器端程序,可以接收Web容器(如Tomcat)发送过来的HTTP请求,并向客户端发送HTTP响应。Servlet通常用来处理动态Web页面、Web表单数据、管理会话(session)等任务。
实际上,Servlet的主要用途是实现动态Web页面,它可以根据请求参数、表单数据、Session状态等动态生成HTML页面内容,并将结果返回给客户端。Servlet还可以处理上传文件、验证用户身份、调用数据库等操作。
使用Servlet可以帮助开发者解决很多Web开发中的问题,如实现动态页面、保证数据交互的安全性、提高Web应用的可扩展性和可维护性等。此外,Servlet的开放式架构使得它与其他Java技术如JSP、JDBC等无缝集成,使得开发更加快捷、高效。
Servlet 生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
Servlet 初始化后调用 init () 方法。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 销毁前调用 destroy() 方法。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
Servlet 实例
// 导入必要的 Servlet 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// 继承 HttpServlet 类
public class MyServlet extends HttpServlet {
// 处理 GET 请求方法
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html");
// 实际的逻辑是在这里
PrintWriter out = response.getWriter();
out.println("<h1>Hello World</h1>");
}
// 处理 POST 请求方法
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
这个 Servlet 会处理 HTTP GET 和 POST 请求,并在浏览器中输出 "Hello World"。要运行此 Servlet,您需要编写一个 web.xml 文件并将其部署到一个 Servlet 容器中。以下是一个示例 web.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>
上面代码,我们将 Servlet 映射到 /myservlet URL,这意味着当用户访问 http://localhost:8080/myservlet 时,Servlet 将被调用。
Servlet 过滤器
Servlet 过滤器是一个 Java 程序组件,它可以拦截 Http 请求和响应,以便在处理请求之前或响应之后执行一些操作。它是基于 Java Servlet API 的一种功能,可以用于处理请求、授权、记录,转换内容或响应,以及在请求或响应被发送到 Servlet 之前或之后执行其他操作。
Servlet 过滤器提供了一种简单而强大的方法来修改或增强 HTTP 请求和响应,可以用来实现一些常见的功能,例如:
- 认证和授权:过滤器可以对请求进行身份验证和权限检查,以保护应用程序免受未经授权的访问。
- 数据压缩:通过在响应中添加压缩头,可以减少数据传输量,从而提高应用程序的性能。
- 日志记录:可以使用过滤器记录请求和响应的详细信息,以进行监视、故障排除和分析。
- 数据转换:可以使用过滤器将请求或响应转换为其他格式,例如将 XML 生成为 JSON 或反之。
Servlet 过滤器可以在 WEB.XML 文件中配置,并通过 Java Servlet API 中提供的 Filter 接口来实现。此外,开发人员还可以自定义过滤器来满足其特定的需求。
二、Tomcat
Tomcat 是一个 Java Web 应用服务器,而 Servlet 是 Java Web 开发的重要组件之一,用于处理客户端的 HTTP 请求和响应,Tomcat 作为一个 Web 服务器,可以通过 Servlet 容器来管理和运行 Servlet,因此 Tomcat 中集成了 Servlet 容器,可以使用 Servlet 直接开发 Web 应用程序,实现对客户端 HTTP 请求的处理和响应。简而言之,Tomcat 与 Servlet 是一种相互依赖的关系。
JDBC
JDBC是Java Database Connectivity的缩写,是Java平台上关于数据库访问的一种标准。JDBC API是Java应用程序和各种关系数据库之间进行连接和交互的标准API。使用JDBC API,Java应用程序可以执行诸如查询、插入、更新和删除等各种数据库操作。
JDBC API由两部分组成:JDBC Driver API和JDBC Manager API。JDBC Driver API提供了连接数据库和执行SQL语句的方法,不同的数据库需要使用不同的JDBC驱动程序。JDBC Manager API则提供了管理JDBC驱动程序、连接数据库及其元数据的方法。
JDBC的工作方式是通过Java应用程序中的JDBC驱动程序来连接到数据库。JDBC驱动程序是一个软件组件,作为Java应用程序和数据库之间通信的媒介。JDBC驱动程序可以使用不同的连接方式来连接不同的数据库,例如直接连接、间接连接、分布式连接等。常用的JDBC驱动程序包括JDBC-ODBC桥、纯Java驱动程序和本地协议驱动程序等。
使用JDBC API进行数据库操作的基本步骤如下:
加载并注册JDBC驱动程序。
创建一个数据库连接。
创建一个Statement对象,用于执行SQL语句。
执行SQL语句,得到一个ResultSet对象,用于处理查询结果。
处理ResultSet对象中的数据。
关闭ResultSet对象、Statement对象和数据库连接。
JDBC是Java应用程序中访问关系型数据库的一种标准API,它简化了Java编程人员对数据库的访问,为Java应用程序与各种关系型数据库之间提供了一个标准接口。
JDBC连接数据库实例
下面是一个使用 JDBC 连接 MySQL 数据库的示例代码:
import java.sql.*;
public class JDBCTest {
public static void main(String[] args) throws SQLException {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 加载MySQL JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 连接到数据库
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
connection = DriverManager.getConnection(url, username, password);
// 执行查询
String sql = "SELECT * FROM mytable";
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
// 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = " + id + ", name = " + name);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
}
上述代码中,先加载 MySQL 的 JDBC 驱动程序,然后通过 DriverManager.getConnection() 方法连接到指定的数据库。接着执行一个查询,将结果集存储在 ResultSet 对象中,并逐行遍历结果集来获取数据。最后,需要关闭连接、语句和结果集等资源。
总结
我们在此文章知道了servlet 是基于Java语言编写的服务器端程序,可以处理Web容器(如Tomcat)发送过来的HTTP请求,也写了实例代码,另外servlet的过滤器,可以用来处理请求前与请求后的一些逻辑。;接着简单了介绍了tomcat,知道Tomcat 作为一个 Web 服务器,可以通过 Servlet 容器来管理和运行 Servlet;最后介绍jdbc,以及jdbc连接数据库的实例代码。