什么是Java Servlet?

我读了很多文章来理解Java servlet,但我没有成功。

你能简单介绍一下Java servlet吗(用简单的语言)?什么是servlet?它的优点是什么?

我不能理解服务器端编程语言(PHP, ASP)和servlet之间的区别。

211926 次浏览

servlet只是一个响应特定类型网络请求的类——最常见的是HTTP请求。基本上,servlet通常用于实现web应用程序——但也有各种框架在servlet之上运行(例如Struts),以提供比servlet提供的“这是一个HTTP请求,写入此HTTP响应”级别更高级别的抽象。

servlet运行在servlet容器中,它处理网络端(例如解析HTTP请求,连接处理等)。最著名的开源servlet容器之一是Tomcat

servlet的核心是一个java类;它可以处理HTTP请求。 通常,通过网络读取HTTP请求和响应的内部细节由Tomcat等容器处理。这样做,作为服务器端开发人员,您可以专注于如何处理HTTP请求和响应,而不必费心处理处理网络等的代码。容器会处理一些事情,比如将整个事情包装在一个HTTP响应对象中,并将其发送给客户端(比如一个浏览器)

现在下一个合乎逻辑的问题是谁决定容器应该做什么?答案是;至少在Java世界中,它是由规范引导的(注意我没有用受控这个词)。例如,Servlet规范(请参阅参考资料2)规定了Servlet必须能够做什么。因此,如果您可以为该规范编写一个实现,那么恭喜您创建了一个容器(从技术上讲,像Tomcat这样的容器也实现了其他规范,并做一些棘手的事情,如自定义类装入器等,但您已经了解了这个想法)。

假设您有一个容器,您的servlet现在是java类,其生命周期将由容器维护,但它们对传入HTTP请求的反应将由您决定。你可以通过在init()、doGet()、doPost()等预定义方法中编写你想要做的事情来做到这一点。看看资源3。

这里有一个有趣的练习。像资源3中那样创建一个简单的servlet,在它的构造函数方法(是的,你可以有一个servlet的构造函数)、init()、doGet()、doPost()方法中编写一些System.out.println()语句,并在tomcat中运行servlet。查看控制台日志和tomcat日志。

希望对大家有所帮助,学习愉快。

资源

  1. 看看HTTP servlet的样子here(Tomcat示例)。

  2. Servlet 规格. net

  3. 简单Servlet example. .

  4. 开始阅读 online/PDF 它还提供了整本书的下载。也许这会有帮助。 如果你刚刚开始使用servlet,那么阅读相关材料和servlet API是一个不错的主意。这是一个较慢的学习过程,但对弄清基本知识更有帮助

我认为servlet基本上是一个java类,充当HTTP请求和HTTP响应之间的中间路径。Servlet也用来使你的网页动态。例如,如果你想重定向到服务器上的另一个网页,那么你必须使用servlet。另一个重要的事情是servlet既可以在本地主机上运行,也可以在web浏览器上运行。

Servlet是一个java类,用于响应HTTP请求并产生HTTP响应......当我们使用HTML创建页面时,它将是一个静态页面,因此为了使其动态,我们使用SERVLET{简单地说,人们可以理解}。 JSP克服了利用servlet的问题,它本身使用了代码和HTML标记..

除了以上,只是要指出流血的明显……

对于许多人来说,这是非常明显的,但对于那些习惯于编写运行然后结束的应用程序的人来说:servlet大部分时间都在无所事事地闲逛……等待发送一些东西,一个请求,然后对它做出响应。由于这个原因,servlet有一个生命周期:它被初始化,然后等待,响应任何抛出给它的东西,然后被销毁。这意味着它必须由其他东西(框架)创建(以及后来销毁),它在自己的线程或进程中运行,除非被要求,否则它什么也不做。而且,通过某种方式,必须实现一种机制,使这个“实体”可以“监听”请求。

我建议阅读有关线程、进程和套接字的内容可以让你对此有所了解:这与一个基本的“hello world”应用程序的功能方式是完全不同的。

有人可能会说,术语“服务器”或“servlet”有点大材小用。一个更合理、更简单的名字可能是“responder”。选择术语“服务器”的原因是历史的:第一个这样的安排是“文件服务器”,多个用户/客户端终端将从中央机器请求特定的文件,然后该文件将像一本书或一盘炸鱼和薯条一样被“提供”。

您刚刚得到了一个正常servlet的答案。但是,我想与您分享一些关于Servlet 3.0的内容

什么是第一个Servlet?

servlet是由容器和容器管理的Web组件 生成动态内容。servlet是经过编译的Java类 到可以动态加载到Java中并由Java运行的字节代码

. Web服务器或Servlet容器 Servlet 3.0是对现有Servlet 2.5规范的更新。 Servlet 3.0需要Java平台企业版6的API。 Servlet 3.0侧重于可扩展性和web框架 可插入性。Servlet 3.0提供了一些扩展,如Ease of 开发(EoD),可插拔性,异步支持和安全性 增强< / p >

开发的便利性

你可以声明Servlets, Filter, listener, Init Params等等 可以使用注释

来配置所有内容

可插入性

你可以用web-fragment.xml创建子项目或模块。它 意味着它允许实现可插入的功能需求 独立。< / p >

异步支持

Servlet 3.0提供了异步处理的能力 例如:等待资源变为可用,生成 异步响应。< / p >

安全增强

支持认证、登录和注销servlet安全 方法< / p >

我从Java Servlet教程找到它

Servlet是用于在web应用程序中创建动态网页的服务器端技术。servlet实际上是一个api,它由一组类和接口组成,具有一定的功能。当我们使用Servlet API时,我们可以使用Servlet类和接口的预定义功能。

Servlet的生命周期:

Web容器维护servlet实例的生命周期。

1。加载Servlet类

2。创建Servlet实例

3.Init()方法被调用

4 . 调用Service()方法

5。调用Destroy()方法

当客户端(浏览器)提出请求时,web-container检查servlet是否正在运行,如果是,则调用service()方法并向浏览器提供响应。

当servlet没有运行时,web-container遵循以下步骤。

1. Classloader装入servlet类

2. 实例化servlet

3.初始化servlet

4.调用service()方法

服务请求后,web-container等待特定的时间,在这段时间内,如果请求来了,那么它只调用service()方法,否则它调用destroy()方法。

什么是Servlet?

  • servlet只是一个响应特定类型网络请求的类——最常见的是HTTP请求。
  • 基本上,servlet通常用于实现web应用程序——但也有各种框架在servlet之上运行(例如Struts),以提供比servlet提供的“这是一个HTTP请求,写入此HTTP响应”级别更高级别的抽象。
  • servlet运行在处理网络端(例如解析HTTP请求,连接处理等)的servlet容器中。Tomcat是最著名的开源servlet容器之一。

  • 在请求/响应模式中,web服务器只能向客户端提供静态页面

  • 为了提供动态页面,我们需要servlet。
  • Servlet只不过是一个Java程序
  • 这个Java程序没有主方法。它只有一些回调方法。
  • web服务器如何与servlet通信?通过容器或Servlet引擎。
  • Servlet在web容器中生死存亡。
  • Web容器负责调用servlet中的方法。它知道Servlet有什么回调方法。

请求流程

  • 客户端向Web服务器发送HTTP请求
  • Web服务器将该HTTP请求转发给Web容器。
  • 由于Servlet不能理解HTTP,它是一个Java程序,它只理解对象,所以web容器将请求转换为有效的请求对象
  • Web容器为每个请求旋转一个线程
  • 所有业务逻辑都在servlet中的doGet()或doPost()回调方法中
  • Servlet构建一个Java响应对象并将其发送到容器。它再次将其转换为HTTP响应并将其发送给客户端

容器如何知道哪个Servlet客户端请求了?

  • 有一个文件叫web。xml
  • 这是web容器的主文件
  • 你在这个文件中有关于servlet的信息-

    • <强> servlet
      • Servlet-name
      • servlet类
      • 李< / ul > < / >
      • servlet-mappings-类似/Login或/Notifications的路径映射在这里
        • Servlet-name
        • url模式
        • 李< / ul > < / >
        • 等等
        • 李< / ul > < / >
        • web应用程序中的每个servlet都应该在这个文件中有一个条目

        • 查找的方式是- url-pattern -> servlet-name -> servlet-class

        如何“安装”servlet ? servlet对象继承自javax.servlet库。*。Tomcat和Spring可以用来利用这些对象来适应用例

        在1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE上观看。这有一个很棒的解释。

Java servlet是处理和响应客户需求并实现servlet接口的服务器端Java程序模块。它有助于提高Web服务器的有用性,而开销、维护和支持可以忽略不计。

servlet充当客户和服务器之间的中介。由于servlet模块一直在服务器上运行,它们可以获取客户的需求并对其做出反应。servlet的Demand和reaction对象提供了一种有用的方法来处理HTTP请求并将内容信息发送回客户。

由于servlet是与Java方言协调的,因此它还具有Java的所有优点,例如,高可移动性、阶段自主权、安全性和Java数据库可用性。

正如这篇文章所描述的,Servlet是一种扩展Java服务器并访问其功能的标准方式。

每个Servlet都可以被视为一个小型服务器(因此得名),它可以访问用Java代码建模的请求和响应,以及其他上下文数据,比如Session。

有了这些,servlet的Java代码就可以与它所需要的任何东西交互以呈现响应,包括交给JSP页面来生成HTML视图。

servlet是当网站用户从服务器请求URL时运行某些功能的Java类。这些函数可以完成将数据保存到数据库、执行逻辑和返回加载页面所需的信息(如JSON数据)等任务。

大多数Java程序使用main()方法在程序运行时执行代码。Java servlet包含doGet()doPost()方法,其作用类似于main()方法。当用户向映射到该servlet的URL发出GETPOST请求时,将执行这些函数。因此,用户可以为GET请求加载一个页面,或存储来自POST请求的数据。

当用户发送GETPOST请求时,服务器读取目录中每个servlet类顶部的@WebServlet来决定调用哪个servlet类。例如,假设你有一个ChatBox类,顶部是这样的:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

当用户请求/chat URL时,你的ChatBox类将被执行。