什么是Java Servlet?

时间:2011-08-27 09:04:36

标签: java java-ee servlets

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

请您简单介绍一下java servlet(简单易懂)。 像什么是servlet?有什么好处?所有这一切。

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

12 个答案:

答案 0 :(得分:282)

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

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

答案 1 :(得分:78)

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

现在要问的下一个合乎逻辑的问题是谁决定容器应该做什么?答案是;在Java世界中至少它是由规范引导(注意我没有使用受控词)。例如,Servlet规范(参见资源2)规定了servlet必须能够做什么。因此,如果你可以为规范编写一个实现,恭喜你刚刚创建了一个容器(像Tomcat这样的技术容器也实现了其他规范并且做了一些棘手的事情,比如自定义类加载器等,但是你明白了。)

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

这是一个有趣的练习。在Resource 3中创建一个简单的servlet,并在其构造函数方法中编写一些System.out.println()语句(是的,你可以有一个servlet的构造函数),init(),doGet(),doPost()方法并运行tomcat中的servlet。请参阅控制台日志和tomcat日志。

希望这会有所帮助,快乐学习。

<强>资源

  1. 了解HTTP servlet的外观here(Tomcat示例)。

  2. Servlet Specification

  3. 简单Servlet example

  4. 开始阅读book在线/ PDF 它还为您提供了整本书的下载。可能这会有所帮助。 如果你刚刚开始使用servlet,那么阅读这些材料和servlet API是一个好主意。这是一个较慢的学习过程,但更有助于明确基础知识。

答案 2 :(得分:26)

除了上述内容外,还要指出流血的明显......

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

我建议阅读线程,进程和套接字会对此有所启发:它与基本的“hello world”应用程序的运行方式完全不同。

可以说“服务器”或“servlet”这个词有点过分。更合理,更简单的名称可能是“响应者”。

答案 3 :(得分:5)

如果您是初学者,我认为本教程可能会提供有关 error

的基本概念

以下链接中有一些有价值的要点。

Servlet技术用于创建驻留在服务器端的Web应用程序,并生成动态网页。

可以通过多种方式描述Servlet,具体取决于具体情况。

  • Servlet是一种技术,即用于创建Web应用程序。
  • Servlet是一个提供许多接口和类的API,包括 单证。
  • Servlet是一个必须实现的接口才能创建任何 的servlet。
  • Servlet是一个扩展服务器和服务器功能的类 响应传入的请求。它可以响应任何类型的 请求。
  • Servlet是部署在服务器上以创建的Web组件 动态网页。 参考文献:What Servlet is ...

答案 4 :(得分:4)

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

Servlet的生命周期:

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

1。已加载Servlet类

2。已创建Servlet实例

3。调用init()方法

4。调用了service()方法

5。调用destroy()方法

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

当servlet没有运行时,web容器遵循以下步骤..

<强> 1。 classloader加载servlet类

<强> 2。实例化servlet

第3。初始化servlet

4.调用service()方法

在服务请求web容器之后等待特定时间,在这个时间如果请求到来那么它只调用service()方法,否则它调用destroy()方法..

答案 5 :(得分:3)

什么是Servlet?

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

  • 在请求/响应范例中,Web服务器只能为客户端提供静态页面

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

请求流程

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

Container如何知道Servlet客户端请求的内容?

  • 有一个名为web.xml的文件
  • 这是Web容器的主文件
  • 您在此文件中有关于servlet的信息 -

    • 的Servlet
      • Servlet的名称
      • Servlet的类
    • servlet-mappings - 像/ Login或/ Notifications这样的路径在这里映射
      • Servlet的名称
      • URL模式
  • Web应用程序中的每个servlet都应该包含此文件的条目

  • 所以这个查找就像-url-pattern - &gt; servlet-name - &gt; servlet的类

如何安装&#34;小服务程序吗 *嗯,servlet对象是从library-javax.servlet继承的。*。可以使用Tomcat和Spring来利用这些对象来适应用例。

参考 - 请注意1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE。这有一个很棒的解释。

答案 6 :(得分:3)

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

servlet作为客户和服务器之间的中介。随着servlet模块在服务器上运行,它们可以获得并响应客户的需求。 servlet的需求和反应对象提供了一种有用的方法来处理HTTP请求并将内容信息发送回客户。

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

答案 7 :(得分:1)

Servlet是一个响应HTTP请求并产生HTTP响应的java类......当我们使用HTML创建一个页面时,它将是一个静态页面,所以为了使它成为动态我们使用SERVLET {用简单的话就可以理解 JSP使用代码和HTML标记来克服servlet的使用。

答案 8 :(得分:0)

正如this article所述,Servlet是扩展Java服务器并访问其功能的标准化方法。

每个Servlet都可以看作是一个微型服务器(因此得名),它可以访问以Java代码建模的请求和响应以及其他上下文数据,例如Session。

有了这些,servlet的Java代码就可以与呈现响应所需的任何接口进行交互,包括切换到用于生成HTML视图的JSP页面。

答案 9 :(得分:0)

Servlet是Java类,当网站用户向服务器请求URL时,它们运行某些功能。这些功能可以完成诸如将数据保存到数据库,执行逻辑以及返回加载页面所需的信息(如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类。

答案 10 :(得分:-1)

我认为servlet基本上是一个java类,它充当HTTP请求和HTTP响应之间的中间路径.Servlet还用于使您的网页动态化。例如,假设您想要重定向到服务器上的另一个网页,那么您必须使用servlet。另一个重要的事情是servlet可以在localhost和web浏览器上运行。

答案 11 :(得分:-2)

你刚才得到了一个正常的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),可插拔,异步支持和安全性   增强

     

易于开发

     

您可以声明Servlet,Filter,Listeners,Init Params等   可以使用注释

配置所有内容      

<强>可插入

     

您可以使用web-fragment.xml创建子项目或模块。它   意味着它允许实现可插入的功能要求   独立地

     

异步支持

     

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

     

安全性增强

     

支持身份验证,登录和注销servlet安全性   方法

我是从Java Servlet Tutorial

找到的