首页 >Java >java教程 >Java 中的 Servlet

Java 中的 Servlet

WBOY
WBOY原创
2024-08-30 16:23:241035浏览

Java 中的 Servlet 可以用多种方式描述。作为一种技术,Servlet 用于创建网页;作为 API,提供接口等。它用于扩展在请求-响应编程模型上托管应用程序的服务器的功能。 Servlet 提供基于组件和独立于平台的方法来构建基于 Web 的应用程序,而没有任何性能限制。 Java 中的 Servlet 可以通过 Java API 和 JDBC 完全访问企业数据库。我们将详细了解这些 Servlet 是什么、为什么使用它们、它的优点和局限性,以及 Servlet 在 Java 中实际如何工作。

广告 该类别中的热门课程 JAVA SERVLET - 专业化 | 18 门课程系列 | 6 次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

Servlet 可以用许多其他方式来描述,

  • Servlet 是一种用于创建 Web 应用程序的技术
  • Servlet 也是一个 API,提供许多接口和类以及文档
  • 这是一个用Java实现的用于创建Servlet的接口
  • 它是一个扩展服务器功能并响应传入请求的类。它可以是任何类型的请求。
  • 它也是一个部署在服务器上的Web组件,用于创建动态网页。

Java 中为什么需要 Servlet?

随着技术的不断发展,我们需要每天熟悉最新的更新或最新的技术堆栈。 Servlet 充当接口、技术、Web 组件、类或 API。 借助 servlet,我们可以通过网页/表单、数据库以及任何其他数据源收集用户信息并创建网页。

  • Java 中的 Servlet 与使用通用网关接口 (CGI) 实现的程序类似,但 Servlet 比 CGI 具有更多优势。
  • 在性能方面,Servlet 明显优于 CGI。
  • 与平台无关,因为 servlet 是用 Java 编写的。
  • 它们在 Web 服务器空间内执行。我们不需要创建单独的流程来处理客户请求。
  • Java 安全性在保护服务器计算机的资源方面实施了一组严格的限制,因此 Servlet 是可信的。
  • Servlet 可以通过套接字、RMI 机制与数据库、小程序或其他一些软件进行通信。

Servlet 在 Java 中如何工作?

Java 中的 Servlet 检查通信接口、客户端和服务器的要求、使用的协议、编程语言以及涉及的软件。 Servlet 按以下步骤执行,

第 1 步: 客户端向 Web 服务器发送请求,读取客户端发送的显式数据,这些数据可以是 HTML 表单、小程序或自定义 HTTP 客户端程序。

第 2 步: Web 服务器接收请求。

第3步:Web服务器将请求传递给相应的servlet,处理请求可能包括与数据库通信、调用Web服务或直接响应。

第 4 步: Servlet 然后处理请求并以输出的形式生成响应。它可以是任何格式,HTML 或 XML、GIF(如果是图像)或 Excel。

第 5 步: 然后这些 servlet 将响应发送回服务器

第 6 步: 然后 Web 服务器将响应发送回客户端和客户端,如浏览器显示在 UI 上一样。

Servlet 架构

上面的 servlet 架构使用了一些 Java 方法,例如:

Java 中的 Servlet

  • Servlet.init(): 由 Servlet 调用,表示 Servlet 实例执行成功并调用服务。然后Servlet调用service()方法来处理客户端的请求。然后使用 destroy() 方法完成服务后终止
  • Servlet.destroy():方法在整个生命周期中只会运行一次,这给我们一个信号,表明Servlet实例已经结束。

用 Java 创建 Servlet 的示例

首先,我们需要安装Java、Eclipse和Tomcat:

1.我们将使用 File-> 创建一个动态 Web 项目。新->动态网络项目。

Java 中的 Servlet

2.输入Project Name并选择Target Runtime,点击Next,需要勾选“Generate web.xml”然后Finish

3.项目结构如下所示。

Java 中的 Servlet

4.然后,点击文件->创建新的 Servlet。

Java 中的 Servlet

Java 中的 Servlet

5.单击上面的“完成”。现在 Eclipse 将根据前面步骤中完成的输入或配置生成 Servlet 类。

代码:

FirstProgram.java

package com.srccode.example;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstProgram
*/
@WebServlet("/FirstProgram")
public class FirstProgram extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FirstProgram() {
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
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

我们将修改 Servlet 类的代码如下,

包 com.srccode.example;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstProgram
*/
@WebServlet("/FirstProgram")
public class FirstProgram extends HttpServlet {
private static final long <em>serialVersionUID</em> = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FirstProgram() {
super();
// TODO Auto-generated constructor stub
}
private String mymsg;
public void init() throws ServletException {
mymsg = "Hi eduCBA Team! We are working on Java Servlet Tutorial! This is the first Servlet Program!";
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter printWriter = response.getWriter();
printWriter.println("<h1>" + mymsg + "</h1>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

在 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>ServletExample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

在index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BeginnersBook Servlet Demo</title>
</head>
<body>
<a href="welcome">Click to call Servlet</a>
</body>
</html>

输出:

右键,点击项目并选择运行方式->在服务器上运行。

现在打开浏览器,我们可以看到以下输出,服务器将在本地主机上运行:

http://localhost:8080/ServletExample/FirstProgram

Java 中的 Servlet

Java 中的 Servlet

Java Servlet 的优点

Java中的Servlet有很多优点。 Servlet 可以看作是运行在服务器端的小程序:

  • Servlet 是持久的:Servlet 保留在内存中,直到使用 destroy() 方法销毁,这有助于服务传入的请求。它只与数据库建立一次连接,并且可以处理同一数据库上的多个请求。减少用于连接到数据库或任何其他源的时间和资源
  • Servlet 是可移植的:这意味着 Servlet 与所有操作系统兼容,即在一个操作系统中编写的程序可以在其他操作系统上执行
  • Servlet 独立于服务器:Servlet 与市场上可用的任何 Web 服务器兼容
  • Servlet 与协议无关:Servlet 可以支持任何协议,如 FTP、Telnet 等。它提供了对 HTTP 协议的扩展支持
  • Servlet 是安全的:由于这些 Servlet 是服务器端程序,仅由 Web 服务器调用,因此继承了 Web 服务器采取的所有安全措施
  • Servlet 是可扩展的:Servlet 可以根据用户需求扩展并变形为对象
  • Servlet 速度很快:由于这些 Servlet 被编译为字节码,因此与其他脚本语言相比执行速度更快。并且还提供类型检查和强错误。
  • Servlet 价格低廉:有许多免费的 Web 服务器可用于任何类型的用途,无论是个人用途还是商业用途。

至此,我们结束了“Java Servlet”主题。我们已经通过示例了解了 Java 中的 Servlet 是什么以及如何使用它们。我们也看到了它的优点,并通过Servlet架构和使用的Servlet方法一步步了解了Servlet是如何使用的。还看到了为什么在 Java 中使用 Servlet 以及它相对于 CGI 的优点。关于 Servlet,我们还有很多值得探索的地方,还有多种类型的 Servlet 可供使用,我们将在进一步的教程中进行更深入的研究。

以上是Java 中的 Servlet的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:Metadata in Java下一篇:Servlet Methods