Esta guía profundiza en la configuración de Tomcat dentro de IntelliJ IDEA, ofreciendo una comprensión completa del proceso, a diferencia de tutoriales superficiales que solo muestran los pasos sin explicación.
Las capturas de pantalla se obtuvieron en un entorno Linux.
Estructura del Proyecto en IntelliJ IDEA
El primer paso es familiarizarse con la configuración de la estructura de su proyecto en IntelliJ IDEA.
Vaya a File > Project Structure.
Configuración de Directorios de Recursos Web y Archivos web.xml
Para que Tomcat pueda acceder a los recursos web necesarios, es crucial configurar la ruta de los recursos web y el archivo web.xml.
Navegue a Facets > Add(+) > Web.
Nota: Establecer el directorio de recursos web en / se refiere a la raíz del directorio de despliegue (el directorio <output> mencionado en la siguiente captura de pantalla).
Configuraciones de Ejecución/Depuración de Tomcat
Acceda a las configuraciones de ejecución/depuración haciendo clic en Edit Configurations... (normalmente ubicado en la barra de herramientas superior derecha).
Puede agregar una configuración haciendo clic en el signo + y seleccionando External Source... para incluir directorios de recursos adicionales como parte del despliegue del servidor.
Manejo de Problemas Comunes
Recursos Web No Encontrados
Si archivos como HTML, JSP, CSS o JavaScript no se encuentran en el directorio de despliegue de IntelliJ IDEA:
- Verifique que la opción Facets esté configurada como Web.
- Asegúrese de que todas las rutas estén configuradas correctamente.
Incluir README.md en el Directorio de Despliegue
Para incluir archivos del módulo, como README.md, en el directorio de despliegue:
- Haga clic derecho en el módulo deseado bajo Available Elements (por ejemplo,
servlet2Spring) y seleccione Put Into Output Root.
Errores 404 al Subir Archivos o Problemas de Ruta
Muchos errores 404, no solo los relacionados con la carga de archivos, pueden resolverse verificando las rutas HTTP:
- Asegúrese de que la ruta HTTP configurada sea accesible. Intente realizar una solicitud GET/POST para verificarla.
- Es común que la ruta configurada en Tomcat sea, por ejemplo,
http://localhost:8080/Demo_war_exploded, pero la ruta de carga se especifique comohttp://localhost:8080/upload. - Para solucionar esto:
- Modifique la ruta de carga a
http://localhost:8080/Demo_war_exploded/upload. - O bien, modifique la configuración de URL de Tomcat (Run/Debug Configuration) a
http://localhost:8080/y establezca el Contexto de Aplicación en/.
- Modifique la ruta de carga a
Errores al Abrir Hipervínculos HTML
Verifique la barra de direcciones para asegurarse de que la URL no haya cambiado inesperadamente.
Por ejemplo, si la ruta HTTP actual es localhost:45/Demo_war_exploded/ y al hacer clic en un enlace la URL cambia a localhost:45/testa:
Tenga en cuenta la diferencia entre los siguientes tipos de hipervínculos:
"/testa": Se refiere a la raíz del dominio (ej.localhost:45/testa)."./testa"o"testa": Se refieren a la ruta HTTP actual (ej.localhost:45/Demo_war_exploded/testa).
Tabla de Rutas:
| Ruta | Descripción |
|---|---|
/ |
Ruta raíz del dominio. |
./ |
Directorio actual. |
../ |
Directorio padre del directorio actual. |
Es importante recordar que la ruta raíz del dominio y el directorio de despliegue no siempre coinciden. En el ejemplo enterior, la ruta HTTP para el despliegue es localhost:45/Demo_war_exploded, mientras que el dominio es localhost:45. La ruta raíz del dominio localhost:45/ no apunta directamente a la ruta de despliegue del proyecto Java Web.
La aparente similitud al acceder a localhost:45 y localhost:45/ se debe a la gestión de la navegación por parte del navegador o el servidor, que maneja el autocompletado de rutas, redirecciones y reenvíos.
Errores Comunes de Tomcat
Revise la corrección de las rutas de filtrado (url-pattern) en su archivo web.xml.
Ejemplo de patrón incorrecto:
<url-pattern>test</url-pattern>
Corrección:
<url-pattern>/test</url-pattern>
El elemento url-pattern no parece soportar rutas relativas y generalmente acepta los siguientes formatos:
| Ejemplo | Descripción |
|---|---|
*.jk |
Coincide con archivos con la extensión jk. |
/go/ |
Ruta absoluta exacta. |
/go/* |
Coincidencia de ruta parcial. |
Las combinaciones como /go/*.do o /go* son inválidas.
El principio de coincidencia es: las rutas más específicas tienen prioridad, y la coincidencia por extensión es la de menor prioridad.
Nota: En la configuración de Tomcat o en archivos XML de Spring, la ruta raíz / para URLs HTTP se refiere a la raíz del dominio (ej. localhost:8081/).
Para recursos estáticos que no deben ser interceptados, puede usar el interceptor predeterminado con servlet-name establecido en default, el cual permite el paso de las URL especificadas. Ejemplo:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
Consulte: https://blog.csdn.net/hello5orld/article/details/9407905
Para una explicación del principio de despliegue, consulte: "IntelliJ idea 的tomcat原理讲解" (Principio de despliegue de Tomcat en IntelliJ IDEA).