什么是Java Servlet?

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

你可以简单介绍一下java servlets(用简单的语言)。 像什么是servlet? 有什么优点? 而所有这一切。

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

一个servlet只是一个响应特定types的networking请求的类,通常是一个HTTP请求。 基本上servlet通常用于实现web应用程序,但也有各种各样的在servlet之上运行的框架(比如Struts),它比“这里是一个HTTP请求,写入这个HTTP响应”层次提供了一个更高层次的抽象,提供。

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

一个servlet的核心是java类, 它可以处理HTTP请求。 读取HTTP请求和响应的内部细节通常由像Tomcat这样的容器来处理。 这样做是为了作为一个服务器端的开发人员,你可以专注于如何处理HTTP请求和响应,而不是处理与networking等相关的代码。容器将照顾像包装整个事情HTTP响应对象并将其发送到客户端(比如浏览器)。

现在要问的下一个合乎逻辑的问题是谁决定容器应该做什么? 答案是, 在Java世界至less它是指导(注意我没有使用受控的字)的规格。 例如Servlet规范(请参阅资源2)规定了servlet必须能够执行的操作。 所以,如果你可以为规范编写一个实现,那么恭喜你刚创build了一个容器(技术上像Tomcat这样的容器也实现了其他规范,并且执行了一些棘手的东西,比如自定义类加载器等,但是你明白了)。

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

这是一个有趣的练习。 在Resource 3中创build一个简单的servlet,并在其构造方法(是的,你可以有一个servlet的构造函数),init(),doGet(),doPost()方法中写入几个System.out.println在tomcat中的servlet。 查看控制台日志和tomcat日志。

希望这有助于快乐的学习。

资源

  1. 看看HTTP servlet 在这里看起来如何(Tomcat示例)。

  2. Servlet 规范 。

  3. 简单的Servlet 例子 。

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

除了上面的内容,只是指出stream血的明显…

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

我build议阅读关于线程,进程和套接字的知识将会带来一些启示:与基本的“hello world”应用程序的function完全不同。

可以说,“服务器”或“servlet”这个术语有点矫枉过正。 一个更理性和更简单的名字可能是“回应者”。

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

从给定的链接下面的一些有价值的点。

Servlet技术用于创build驻留在服务器端的Web应用程序,并生成dynamicWeb页面。

根据上下文,可以用很多方式来描述Servlet。

  • Servlet是一种技术,即用于创buildWeb应用程序。
  • Servlet是一个提供许多接口和类(包括文档)的API。
  • Servlet是一个必须实现来创build任何servlet的接口。
  • Servlet是一个扩展服务器function并响应传入请求的类。 它可以响应任何types的请求。
  • Servlet是在服务器上部署的Web组件,用于创builddynamic网页。 参考: 这里 。

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

Servlet的生命周期:

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

1。 加载Servlet类

2。 创buildServlet实例

3。 init()方法被调用

4。 service()方法被调用

5。 destroy()方法被调用

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

当servlet没有运行时,web容器按照以下步骤操作。

1. classloader加载servlet类

2.实例化servlet

3.初始化servlet

4.调用service()方法

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

我知道已经有很多答案,但在阅读所有的答案后,这是我得到的

Servlet的

Servlet是在Web或Application Server上运行的程序,充当来自Web浏览器或其他HTTP客户端的请求与HTTP服务器上的数据库或应用程序之间的中间层。

一个servlet只是一个响应特定types的networking请求的类,通常是一个HTTP请求。

基本上,servlet通常用于实现web应用程序 – 但也有各种各样的框架,它们在servlet(例如Struts)之上运行,以提供比“这里是一个HTTP请求,写入这个HTTP响应”层次更高级别的抽象servlets提供。

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

容器将处理一些东西,比如把整个东西包装在一个HTTP响应对象中,然后发送给客户端(比如浏览器)。

javax.servlet和javax.servlet.http包提供了编写servlet的接口和类。 所有的servlet必须实现定义生命周期方法的Servlet接口。 在实现通用服务时,可以使用或扩展随Java Servlet API提供的GenericServlet类。 HttpServlet类提供了用于处理特定于HTTP的服务的方法,例如doGet和doPost。

这是博客。

Servlet是一个java类,用于响应HTTP请求并生成一个HTTP响应……当我们使用HTML创build一个页面时,它将成为一个静态页面,所以为了使它dynamic化,我们使用SERVLET {简单的话人们可以理解}为了利用servlet,JSP使用了代码和HTML标签。

你刚刚得到了一个正常的servlet的答案。 不过,我想分享一些关于Servlet 3.0的内容

什么是第一个Servlet?

一个servlet是一个由容器pipe理并生成dynamic内容的Web组件。 Servlet是被编译成字节码的Java类,可以被Java技术支持的Web服务器或Servlet容器dynamic地加载和运行。

Servlet 3.0是对现有Servlet 2.5规范的更新。 Servlet 3.0需要Java Platform,Enterprise Edition 6的API。Servlet 3.0主要关注可扩展性和Web框架的可插入性。 Servlet 3.0为您带来了一些扩展,例如易于开发(EoD),可插拔性,asynchronous支持和安全性增强

易于发展

你可以声明Servlet,Filter,Listeners,Init Params,几乎所有的东西都可以通过注释来configuration

可插拔

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

asynchronous支持

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

安全性增强

支持身份validation,login和注销servlet安全方法

我从Java Servlet教程中find它

我认为servlet基本上是一个java类,作为HTTP请求和HTTP响应之间的中间方式.Servlet也用于使您的网页dynamic化。 假设,例如,如果你想redirect到服务器上的另一个网页,那么你必须使用servlet。 另一个重要的事情是,servlet可以在本地主机上运行,​​也可以在Web浏览器上运行。

Servlet是一个java类…..当我们将线程类扩展到一个java类时,我们称之为class是一个线程。然后我们可以使用线程类的每个特性。就像我们将HttpServlet扩展到一个java类一样,我们称之为一个servlet。特别的是我们在开发web应用程序时使用servlet。