From ASP.NET to Java Servlets
If you're a .NET developer learning Java, the easiest way to understand Servlets is to compare them to concepts you already know from ASP.NET.
Architecture Comparison
ASP.NET Core
Browser
|
Kestrel / IIS
|
Middleware
|
Controller
|
Service
|
Database
Java Servlet
Browser
|
Tomcat
|
Filter
|
Servlet
|
Service
|
Database
.NET vs Java Mapping
| .NET | Java |
|---|---|
| Kestrel / IIS | Tomcat |
| Middleware | Filter |
| Controller | Servlet |
| Program.cs | ServletContextListener |
| HttpRequest | HttpServletRequest |
| HttpResponse | HttpServletResponse |
| Session | HttpSession |
Creating Your First Servlet
Create a file named HelloServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain");
response.getWriter().println("Hello World");
}
}
ASP.NET Equivalent
[ApiController]
[Route("hello")]
public class HelloController : ControllerBase
{
[HttpGet]
public string Get()
{
return "Hello World";
}
}
Project Structure
HelloWeb
|
|-- WEB-INF
| |-- classes
| | |-- HelloServlet.class
| |
| |-- web.xml
|
|-- hello.jsp
Compiling the Servlet
Unlike normal Java applications, servlet applications depend on the Servlet API. Tomcat provides this library.
javac -cp "C:\Tomcat\lib\servlet-api.jar" ^
-d WEB-INF\classes ^
HelloServlet.java
Creating web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
version="4.0">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
Configuring Tomcat Without Using webapps
Create:
Tomcat/conf/Catalina/localhost/test.xml
Contents:
<?xml version="1.0" encoding="UTF-8"?>
<Context
docBase="C:\Users\vkumar\source\TestProject\LearnServlet\HelloWeb" />
The filename test.xml becomes the application context:
http://localhost:8080/test
Starting Tomcat
catalina.bat run
Running the Servlet
Open:
http://localhost:8080/test/hello
Expected result:
Hello World
How Tomcat Calls the Servlet
You never call doGet() directly.
Tomcat calls it whenever the browser sends a matching request.
Browser
|
GET /test/hello
|
Tomcat
|
HelloServlet.doGet()
|
Response
|
Browser
Reading Query Parameters
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String name =
request.getParameter("name");
response.getWriter()
.println("Hello " + name);
}
Call:
http://localhost:8080/test/hello?name=Vikas
Output:
Hello Vikas
ASP.NET Equivalent
string name =
Request.Query["name"];
Servlet Lifecycle
Tomcat Starts
|
v
init()
|
v
doGet()/doPost()
|
v
destroy()
|
v
Tomcat Stops
Common Errors
package javax.servlet does not exist
javac -cp "C:\Tomcat\lib\servlet-api.jar"
404 Not Found
Verify url-pattern in web.xml.
Servlet Not Loading
Ensure HelloServlet.class exists in:
WEB-INF/classes
Conclusion
Servlets are the foundation of Java web development. Understanding Servlets makes it easier to understand Spring MVC, Spring Boot, Filters, Listeners, Authentication, and modern Java enterprise applications.
For .NET developers, the key idea is simple:
Controller = Servlet
Middleware = Filter
Program.cs = Listener
Kestrel/IIS = Tomcat
HttpRequest = HttpServletRequest
HttpResponse = HttpServletResponse
Session = HttpSession





