When you type localhost:8080
in your browser, here's what happens at each step:
- The browser resolves
localhost
to the IPv4 address127.0.0.1
(or IPv6's::1
) - It establishes a TCP connection to port 8080 on your local machine
- Apache Tomcat, listening on port 8080, receives the HTTP request
- Tomcat's default connector processes the request and returns the server's index page
Port 8080 is an alternative HTTP port commonly used for:
- Development servers (to avoid conflict with port 80)
- Application servers like Tomcat, Jetty, or GlassFish
- Proxy servers or caching services
You can verify Tomcat's port configuration in conf/server.xml
:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
The welcome page you see comes from Tomcat's webapps directory. On a standard installation, these files are located at:
$CATALINA_HOME/webapps/ROOT/
Where CATALINA_HOME
is your Tomcat installation directory. The typical structure includes:
webapps/ROOT/
├── index.html
├── index.jsp
├── WEB-INF/
│ └── web.xml
└── META-INF/
To extend beyond the default page, create a simple JSP file in webapps/ROOT/test.jsp
:
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>My First JSP</title>
</head>
<body>
<h2>Current Time:</h2>
<%= new java.util.Date() %>
</body>
</html>
Access it at http://localhost:8080/test.jsp
to see server-side execution in action.
If localhost:8080
doesn't work, try these troubleshooting steps:
- Verify Tomcat is running:
ps -ef | grep tomcat
(Linux/Mac) or check Services (Windows) - Test port availability:
telnet localhost 8080
ornetstat -ano | findstr 8080
- Check startup logs in
logs/catalina.out
- Confirm no firewall is blocking port 8080
To make your Tomcat server accessible on your local network:
<Connector address="0.0.0.0" port="8080" protocol="HTTP/1.1">
Then access it from another device using your machine's local IP address.
Key differences in a production setup:
Development | Production |
---|---|
Port 8080 | Port 80 (standard HTTP) |
localhost binding | Specific IP or domain binding |
Detailed error pages | Custom error pages |
Default apps (ROOT, docs, examples) | Minimal deployment |
When you type localhost:8080
in your browser, you're making an HTTP request to your own machine. Here's what happens under the hood:
1. DNS Resolution: "localhost" resolves to 127.0.0.1 (IPv4 loopback address)
2. Port Specification: ":8080" directs traffic to Tomcat's default non-privileged port
3. TCP Handshake: Your browser establishes a connection with the Tomcat server
4. HTTP Request: A GET request is sent for the root resource ("/")
5. Server Processing: Tomcat handles the request and generates a response
The page you see comes from Tomcat's webapps directory. Here's the typical file structure:
apache-tomcat-8.0.23/
├── webapps/
│ ├── ROOT/ # Contains the default index.html/jsp
│ ├── docs/ # Tomcat documentation
│ ├── examples/ # Sample web applications
│ └── ...
The default welcome page is usually served from webapps/ROOT/index.jsp
.
Port 8080 is where Tomcat listens by default for HTTP requests:
// Common web ports:
80 - Default HTTP
443 - Default HTTPS
8080 - Common alternative HTTP
8443 - Common alternative HTTPS
You can verify Tomcat's running status with:
// Linux/Mac:
netstat -tulnp | grep 8080
// Windows:
netstat -ano | findstr 8080
Here's a simplified view of what happens when you request localhost:8080:
// Browser sends:
GET / HTTP/1.1
Host: localhost:8080
Accept: text/html,application/xhtml+xml
... [other headers]
// Tomcat responds:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
... [headers]
<!DOCTYPE html>
<html>
... [HTML content]
</html>
Try creating a simple JSP file in webapps/ROOT/test.jsp
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>My First JSP</title>
</head>
<body>
<h2>Current Time: <%= new java.util.Date() %></h2>
<p>Server Info: <%= application.getServerInfo() %></p>
</body>
</html>
Access it at http://localhost:8080/test.jsp
to see dynamic content generation.
The full technology stack involved includes:
1. Browser (HTTP Client)
2. OS Network Stack
3. Java Virtual Machine (running Tomcat)
4. Tomcat Connector (handles HTTP)
5. Catalina Servlet Container
6. Your Web Application
Each layer transforms the request until it reaches your code and back.