什么是Java Servlet?

har*_*dik 252 java servlets java-ee

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

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

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

Jon*_*eet 307

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

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

  • Servlet是Web服务器_inside_ Web服务器本身调用的Java代码片段.如果你想要看起来像PHP或ASP的东西你需要JSP(这是一种特殊的servlet) (14认同)
  • @Hardik:正如我在帖子中写的那样,servlet是在servlet容器内运行的类.servlet容器可以同时托管多个servlet. (7认同)
  • @Hardik:是的,确切地说.servlet可以提供HTML来显示表单,也可以对提交进行操作.Servlet还可用于实现Web服务.除了HTTP之外,它们*可以用于其他协议,但HTTP绝大多数是servlet处理的最常见的传输. (5认同)
  • @Hardik:并不是说他们可以做任何其他方式无法做到的事情.Servlet只是服务器端Java工作的常用技术.Servlet不是一种语言 - 也不是ASPX.两者都是与另一种语言结合使用的平台 - 在servlet的情况下通常是Java. (4认同)
  • Thanx的答案,但我仍然无法真正使用servlet,如果你可以通过示例解释我们可以使用servlet的情况会更好.我不明白servlet的使用就像servlet可以做的那样,其他服务器端编程语言都做不到. (2认同)
  • 很遗憾,servlet 标签的“信息”部分中的信息看起来是由 Jack Bigbrains 先生为 Harry Biggerbrains 先生编写的。:/ (2认同)

Ayu*_*man 87

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

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

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

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

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

资源

  1. 看看HTTP servlet 在这里的样子(Tomcat示例).

  2. Servlet 规范.

  3. 简单的Servlet 示例.

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

  • Stack Overflow不鼓励仅链接答案,因为它们链接到的资源将来可能不可用或可能会更改.考虑总结您的答案中链接的相关内容以改进它. (11认同)
  • @Cupcake感谢您的建设性反馈.我试着在答案中添加一些肉.感谢您让社区变得更好. (6认同)

mik*_*ent 28

除了以上所述,只是指出了流血的明显......

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

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

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

  • 将 servlet 视为类似于标准 MVC 框架中的“控制器”是否不正确? (2认同)

San*_*alp 8

什么是Servlet?

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

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

  • 要提供动态页面,我们需要Servlet。
  • 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响应以将其发送到客户端

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

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

    • 小服务程序
      • Servlet名称
      • Servlet类
    • servlet映射 -类似于/ Login或/ Notifications的路径在此处映射
      • Servlet名称
      • 网址模式
    • 等等
  • Web应用程序中的每个servlet都应在该文件中都有一个条目

  • 因此,这种查找的方式类似于-url-pattern-> servlet-name-> servlet-class

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

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


San*_*ola 5

如果您是初学者,我认为本教程可能会给出关于什么Servlet的基本概念......

一些有价值的观点来自给定的链接.

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

Servlet可以通过多种方式进行描述,具体取决于上下文.

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


小智 5

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-container 遵循以下步骤..

1.classloader加载servlet类

2. 实例化servlet

3. 初始化servlet

4.调用service()方法

在服务请求后,web-container 等待特定时间,此时如果请求到来,则它只调用 service() 方法,否则调用 destroy() 方法..


kun*_*dus 5

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

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

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

@WebServlet("/chat")
public class ChatBox extends HttpServlet {
Run Code Online (Sandbox Code Playgroud)

当用户请求/chatURL 时,您的ChatBox类就会被执行。