搜索
首页Javajava教程Java 中的 Servlet

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 id="mymsg">" + 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



<meta charset="UTF-8">
<title>BeginnersBook Servlet Demo</title>


<a href="welcome">Click to call Servlet</a>

输出:

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

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

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
带你搞懂Java结构化数据处理开源库SPL带你搞懂Java结构化数据处理开源库SPLMay 24, 2022 pm 01:34 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

Java集合框架之PriorityQueue优先级队列Java集合框架之PriorityQueue优先级队列Jun 09, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

完全掌握Java锁(图文解析)完全掌握Java锁(图文解析)Jun 14, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

一起聊聊Java多线程之线程安全问题一起聊聊Java多线程之线程安全问题Apr 21, 2022 pm 06:17 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

Java基础归纳之枚举Java基础归纳之枚举May 26, 2022 am 11:50 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

详细解析Java的this和super关键字详细解析Java的this和super关键字Apr 30, 2022 am 09:00 AM

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

Java数据结构之AVL树详解Java数据结构之AVL树详解Jun 01, 2022 am 11:39 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

一文掌握Java8新特性Stream流的概念和使用一文掌握Java8新特性Stream流的概念和使用Jun 23, 2022 pm 12:03 PM

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),