Servlet
Last updated
Was this helpful?
Last updated
Was this helpful?
A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by web servers. For such applications, Java Servlet technology defines HTTP-specific servlet classes.
It is a web container that is part of a web server that interacts with the Java Servlets. Servlet container is responsible for
Managing the lifecycle of servlets
Creating servlet object, request, and response objects
Mapping a URL to a particular servlet
Ensuring that the URL requester has the correct access rights
Managing the execution of JSP pages etc
The first container will perform Servlet Loading.
The container will check if the same servlet is already available or not, if not then it loads the .class file, the byte code into the memory.
To perform this, container will call class c = class.forName(“helloServlet”); internally.
After servlet loading, it creates an object for the servlet.
And it creates “servletConfig” object for that servlet and stores all the data of that particular servlet in it.
To perform this, container will call object obj = c.newInstance(); internally.
Now we need to initialize the servlet, the container will call the init() by passing servletConfig object to it.
First, the container will execute parameterized init() method. Inside that, another parameter less init() method will be called from the Generic servlet and that method also will be executed.
The container will recognize the web.xml file under the WEB-INF folder. After identifying the web.xml file, the container will perform web.xml file loading, parsing, and reading the contents of it. If any application-level data like display names or context parameters are available in the web.xml file, the container will take that application data and store it in “servletContext” object. This data is managed by a servlet context object.
The server will forward the valid request to the servlet container, the container will identify what is the application name and resource name to execute. As we specified in the form, the container will identify the servlet to execute based on the URL pattern(“hello”) that associated is with the “HelloServlet.class” file under the classes folder. Once the container identifies the servlet .class file, the life cycle of the servlet will start.
The container will create HTTP Request and HTTP response objects and a thread to execute dopost() method. We are using HTTPServlet and we need to execute the doPost() method by passing Http servlet request and Http servlet response.
Once the “doPost()” method is executed, then the response will be generated in the response object. When the container reaches the end of the doPost() method execution, that thread will be destroyed and the container will dispatch that response to the main server. The main server will transfer the HTTP response to the protocol. The protocol will prepare a Response format that is having Response Header and Response Body.
A filter is an object that is invoked at the preprocessing and postprocessing of a request.
It is mainly used to perform filtering tasks such as conversion, logging, compression, encryption and decryption, input validation etc.
The servlet filter is pluggable, i.e. its entry is defined in the web.xml file, if we remove the entry of filter from the web.xml file, filter will be removed automatically and we don't need to change the servlet.
A Spring servlet is a Java class that serves as the central point for handling requests and managing the lifecycle of the Spring IoC container.
The Spring Framework provides a class called DispatcherServlet, which acts as the front controller in a Spring-based web application. When a user makes a request to a Spring web application, the DispatcherServlet is responsible for handling the request, delegating responsibility to other components, and ultimately returning a response to the user.
The DispatcherServlet also manages the lifecycle of the Spring IoC container, including creating and initializing the container and making its beans available for use by other components in the application.
DispatcherServlet
expects a WebApplicationContext
(an extension of a plain ApplicationContext
) for its own configuration. WebApplicationContext
has a link to the ServletContext
and the Servlet
with which it is associated
The root WebApplicationContext
typically contains infrastructure beans, such as data repositories and business services that need to be shared across multiple Servlet
instances. Those beans are effectively inherited and can be overridden (that is, re-declared) in the Servlet-specific child WebApplicationContext
, which typically contains beans local to the given Servlet
.
web.xml
To tell where the config file is
Setup the dispatcherServlet so as to send the user request to corresponding controller to handle the request and return the correct view
The output file(war) will be generated based web.xml so as to do deployment
2. spring-mvc-demo-servlet.xml
To perform component scanning
Allow the support of validation
Define the pattern of getting the view
Spring Boot automatically configures a spring application based on dependencies present or not present in the classpath as a jar, beans, properties, etc.
It makes development easier and faster as there is no need to define certain beans that are included in the auto-configuration classes.
A typical MVC database driven Spring MVC application requires a lot of configuration such as dispatcher servlet, a view resolver, Jackson, data source, transaction manager, among many others.
Spring Boot auto-configures a Dispatcher Servlet if Spring MVC jar is on the classpath.
Auto-configures the Jackson if Jackson jar is on the classpath.
Auto-configures a Data Source if Hibernate jar is on the classpath.
Auto-configuration can be enabled by adding @SpringBootApplication or @EnableAutoConfiguration annotation in startup class. It indicates that it is a spring context file.