Servidor web ligero en Java, desarrollado desde cero, con soporte para HTML, imágenes PNG y un framework IoC basado en POJOs. Implementa un mecanismo de anotaciones para definir rutas HTTP de forma similar a frameworks como Spring Boot.
✅ Servidor HTTP con soporte para solicitudes GET
✅ Manejo de archivos estáticos (HTML, imágenes, CSS, JS)
✅ Inversión de Control (IoC) con inyección de dependencias automática
✅ Definición de rutas con anotaciones como @RestController, @GetMapping y @RequestParam
✅ Arquitectura extensible y modular
Antes de ejecutar el proyecto, asegúrate de tener instalado lo siguiente:
- Java 11 o superior - Ambiente de desarrollo
- Maven - Para la compilación y gestión de dependencias
- Git - Para clonar el repositorio
1️⃣ Clonar el repositorio:
git clone https://github.com/TuUsuario/ServidorWebJava.git2️⃣ Acceder a la carpeta del proyecto:
cd ServidorWebJava3️⃣ Compilar y ejecutar la aplicación:
mvn clean package exec:java -Dexec.mainClass="server.Main"4️⃣ Una vez iniciado el servidor, accede desde el navegador a:
ServidorWebJava/
│── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── server/
│ │ │ │ ├── WebServer.java # Implementación del servidor HTTP
│ │ │ │ ├── IoCFramework.java # Gestión de inyección de dependencias
│ │ │ │ ├── RequestHandler.java # Procesamiento de solicitudes HTTP
│ │ │ │ ├── annotations/
│ │ │ │ │ ├── RestController.java
│ │ │ │ │ ├── GetMapping.java
│ │ │ │ │ ├── RequestParam.java
│ │ ├── resources/
│ │ │ ├── static/ # Archivos HTML, CSS, JS
El servidor permite definir rutas utilizando @RestController y @GetMapping:
@RestController
public class MyController {
@GetMapping("/hello")
public String sayHello() {
return "¡Hola, mundo!";
}
}📌 ¿Dónde se resuelve en el código?
IoCFramework.java: Escanea clases con@RestControllery detecta métodos con@GetMapping.RequestHandler.java: Mapea rutas y ejecuta métodos asociados.
Se pueden definir parámetros en las rutas con @RequestParam:
@GetMapping("/saludo")
public String saludo(@RequestParam("nombre") String nombre) {
return "Hola, " + nombre + "!";
}📌 ¿Dónde se resuelve en el código?
IoCFramework.java: Extrae parámetros de la URL y los inyecta en el método adecuado.
Ejemplo de uso en el navegador: 🔗 http://localhost:8080/saludo?nombre=Aglaea
El servidor puede devolver archivos HTML, CSS, JS e imágenes PNG desde una carpeta static.
Ejemplo: 🔗 http://localhost:8080/index.html
📌 ¿Dónde se resuelve en el código?
WebServer.java: Detecta si la ruta solicitada es un archivo y lo devuelve al cliente.RequestHandler.java: Determina el tipo de contenido (Content-Type).
El framework IoC escanea clases con @RestController e instancia automáticamente los objetos.
📌 ¿Dónde se resuelve en el código?
IoCFramework.java:- Carga dinámicamente las clases usando
ClassLoader. - Usa
Reflection APIpara instanciar controladores automáticamente.
- Carga dinámicamente las clases usando
🔹 Soporte para solicitudes POST
🔹 Manejo de errores y respuestas HTTP más robustas
🔹 Implementación de ThreadPool para manejo concurrente
👨💻 Andres Felipe Parra Quiroga
🔗 GitHub: Flyp 📧 Contacto: Flyp.and@gmail.com

