Generated by GPT-5-mini| Servlet | |
|---|---|
![]() User:Zedlander, User:Sae1962 · CC BY-SA 3.0 · source | |
| Name | Servlet |
| Developer | Sun Microsystems; later Oracle Corporation |
| Initial release | 1997 |
| Written in | Java (programming language) |
| Operating system | Cross-platform |
| Platform | Java EE / Jakarta EE |
| License | Proprietary software / Open-source software |
Servlet Servlets are server-side components written for the Java (programming language) platform that extend the capabilities of web servers and application servers to process HTTP requests and generate dynamic content. Originating within the ecosystem led by Sun Microsystems and standardized through evolving platform efforts like Java Platform, Enterprise Edition and Jakarta EE, servlets became a foundational technology alongside technologies such as JavaServer Pages and Enterprise JavaBeans. They integrate with web standards and infrastructures managed by organizations like the World Wide Web Consortium and influenced by specifications from Oracle Corporation and the Eclipse Foundation.
Servlet technology was introduced by Sun Microsystems in the late 1990s as part of efforts to enable dynamic web applications on the Java (programming language) platform. Early versions were formalized through the Java Community Process and adopted in the Java Platform, Enterprise Edition specification, paralleling contemporaneous technologies like Common Gateway Interface and Active Server Pages. Over time stewardship shifted: Oracle Corporation oversaw later releases until parts of the enterprise stack moved to the Eclipse Foundation under the Jakarta EE brand, reflecting broader industry migration seen with projects such as GlassFish and Apache Tomcat. Major milestones include initial API releases, incorporation into servlet containers used by servers like Apache HTTP Server with proxying, and standard updates aligning with HTTP/1.1 and later server-side patterns.
A servlet operates within a container provided by an application server or a servlet container such as Apache Tomcat, Jetty, GlassFish, or WildFly. The container manages threading, lifecycle, and integration with services like Java Naming and Directory Interface and Java Transaction API. Core components interacting in the architecture include the servlet class object, request and response objects tied to protocols like HTTP/1.1, session management backed by mechanisms such as Cookie (computer), and deployment descriptors (historically web.xml). Containers often interoperate with build and dependency tools and systems like Apache Maven, Gradle (software), JUnit, and Jenkins for CI/CD pipelines.
The Servlet API defines interfaces and classes used by developers and containers; examples are interfaces that align with patterns in Model–view–controller frameworks and specifications from Jakarta EE. The lifecycle begins with container instantiation, initialization via an init method, service routines that delegate to protocol-specific handlers, and eventual destruction through a destroy method. Containers follow threading and concurrency models influenced by Java Memory Model semantics and coordinate with platform features such as SecurityManager (legacy) and modern module systems like Project Jigsaw.
Servlets receive protocol requests encapsulated in request objects and produce responses through response objects; typical methods correspond to HTTP methods like GET, POST, PUT, DELETE and integrate with standards-driven components such as MIME types, Character encoding, and SSL/TLS endpoints managed by servers like Nginx or Apache HTTP Server when used as reverse proxies. Session affinity and state management rely on constructs comparable to HTTP cookie and URL rewriting used in scaled deployments behind load balancers like HAProxy or F5 Networks. For content generation, servlets often delegate view rendering to technologies including JavaServer Pages, Thymeleaf, Freemarker, or return streamed binary data for use with protocols like WebSocket when integrated via adapters.
Deployment historically used web.xml descriptors conforming to the Servlet specification; modern approaches emphasize annotations introduced in later API versions and packaging as WAR (file format) archives. Containers support hot deployment, context configuration, security realms such as those in Apache Tomcat or WildFly, and resource binding through Java Naming and Directory Interface. Build and CI systems integrate with artifact repositories like Maven Central and JFrog Artifactory, while orchestration in cloud environments can involve Docker (software) containers, Kubernetes, and service meshes such as Istio.
Security for servlet-based applications addresses authentication and authorization schemes compatible with standards such as OAuth 2.0 and OpenID Connect, transport security via TLS and certificate management from authorities like Let's Encrypt, and protection against threats enumerated in advisories from organizations like OWASP. Performance tuning involves thread pool sizing, connection handling, session replication strategies used in clusters like Hazelcast or Redis (software), and optimizations such as response compression, HTTP/2 support, and asynchronous processing using servlet features that align with reactive approaches exemplified by Reactive Streams and implementations in Project Reactor or RxJava.
Prominent servlet container implementations include Apache Tomcat, Jetty, GlassFish, and WildFly, and many enterprise systems embed servlet containers inside products from vendors like IBM and Red Hat. Use cases span traditional web applications, RESTful APIs following constraints by Roy Fielding and REST (Representational State Transfer), microservices architectures that integrate with Spring Framework and Jakarta RESTful Web Services, and streaming or long-polling applications interoperating with HTML5 clients and APIs used by services such as Twitter-style feeds. The servlet model remains a core building block in large-scale systems deployed across infrastructures managed by providers like Amazon Web Services, Google Cloud Platform, and Microsoft Azure.