2008-08-29 37 views
37

¿Alguien sabe cómo depurar JSP en IntelliJ IDEA?Depuración JSP en IntelliJ IDEA

Cuando configuro un punto de interrupción en mis archivos JSP, esos puntos de interrupción nunca parecen tener efecto. El depurador nunca los golpea. IDEA parece pensar que los puntos de interrupción son válidos. Veo un punto rojo a la izquierda de la línea donde coloco mi punto de quiebre.

Leí en el foro de IntelliJ in this post que los archivos JSP deben estar bajo web-inf para la eliminación de fallas al trabajo.

Pero también he leído que JSP archivos colocados en web-inf no serán accesibles directamente por el usuario.

No estoy seguro de quién tiene la razón.

+0

Acabo de comprobar, que funciona para mí. IntelliJ 6.0.5 ejecutando Tomcat 5. JSP en la carpeta de recursos, nada especial. Necesitas dar más información sobre tu configuración. Intenta crear un proyecto simple y pruébalo con diferentes versiones de Tomcat/lo que sea. – itsadok

+0

Si eclipse: http: //codeinventions.blogspot.com/2014/08/how-to-debug-jsp-with-help-of-compiled.html –

Respuesta

0

Para la segunda parte de su pregunta ("el usuario no puede acceder directamente a los archivos jsp colocados en web-inf") es correcto. Para permitir que los usuarios accedan a los archivos JSP en la carpeta WEB-INF, las entradas de servlet-mapeo y servlets deben realizarse en el archivo web.xml para cada página JSP.

29

Para la depuración de JSP en Intellij, hay algunas configuraciones que deben estar en orden. El hecho de que Intellij siempre le permita agregar un punto de interrupción en una línea JSP no implica necesariamente que haya configurado la depuración JSP. En lo que sigue me refiero a la configuración de Intellij 8, w.r.t. las versiones anteriores necesitarás hacer operaciones similares ya que los conceptos son los mismos.

Para habilitar la depuración de JSP debe realizar dos pasos: establecer una configuración de aplicación web en su proyecto y agregar una configuración de servidor de aplicación web.

Configuración de aplicación web: para tener depuración JSP, debe tener una faceta "web" en la estructura de su proyecto, apuntando al archivo web.xml correcto. Dependiendo del tipo de estructura de la aplicación web que esté utilizando, la faceta puede ser detectada automáticamente por Intellij (vaya de todos modos para verificar lo que ha hecho) o puede que tenga que agregarla manualmente. Recuerde en la pestaña "Configuración de compilación de Java EE" que se establezca como "Crear un directorio explosionado de facetas web"; si no quiere duplicaciones, un truco es simplemente habilitarlo y señalar su directorio ya existente.

(web) Servidor de aplicaciones: vaya a "editar configuraciones", allí debe agregar a las configuraciones un servidor de aplicaciones, no ejecutar el servidor web como una aplicación como cualquier otra. De esta forma, Intellij podrá interceptar llamadas JSP. En la lista de servidores de aplicaciones, debe tener el predeterminado, Tomcat. Asegúrese de tener una instalación local de Tomcat antes de hacer esto, y apúntelo cuando agregue el servidor de aplicaciones web. El último truco es ir a la pestaña "Despliegue" y seleccionar como "Fuente de implementación" la misma faceta que configuró en el paso anterior.

La misma configuración funciona si quiere usar otro servidor de aplicaciones web, lo probé con las versiones más recientes de Caucho Resin y la depuración funciona bien (no con las combinaciones previas de Intellij y Resina).

Si no ve a Tomcat en la lista de servidores de aplicaciones disponibles para agregar, revise los complementos en el panel general de configuración de Intellij: en las últimas versiones, cada vez más funcionalidades se vuelven "conectables" e incluso muy básicas las funciones pueden ser deshabilitadas; este complemento se llama "Integración de Tomcat".

Finalmente, seguramente no es cierto que los archivos JSP deben estar bajo WEB-INF para estar bajo depuración.

4

De todos modos, debe iniciar el Tomcat en IDEA, no desde un Tomcat remoto.

+1

¡Gracias por esta pista! No pude depurar cuando ejecuté un mvn tomcat: ejecutar. Cuando utilicé una configuración de ejecución de tomcat local, pude depurar jsps. – Jay

18

Para la depuración remota de JSP (que también se aplica a localhost) necesitará instalar el JSR45support plugin.

  1. Ir a Preferencias> Plugins , búsqueda de la JSR45 plugin, y activarlo.
  2. Crear una configuración de ejecución: Run>configuraciónEjecutar> haga clic en el botón +, y recoger JSR45 Compatible servidor, y luego en el cuadro de diálogo que se abre, seleccione Remoto, y configure el host y el puerto del servidor. Configuración Servidor de aplicaciones:genérico debería funcionar bien.
  3. asegúrese de configurar el puerto correcto en de inicio/configuración>depuración.

  4. Abrir la configuración del módulo (F3 en la carpeta del proyecto), y añadir una faceta Web bajo Facetas, y bajo directorios de recursos Web especificar la carpeta raíz JSP.

  5. Haga clic en la configuración ... botón y seleccionar las carpetas con los frijoles, las clases y las bibliotecas que dependen de las JSP.

puntos de interrupción Ahora JSP deben trabajar, siempre y cuando usted comenzó su servidor con el proper debug arguments al iniciar el servidor.

+0

Reiniciar idea después del paso 1. Esta función solo está disponible en Idea Ultimate. –

0

Por favor, asegúrese de que en la que Tomcat conf/web.xmlsuppressSmap es no habilitada como apoyo de JSR45 es requerido por el depurador de IntelliJ.

Se debe tener este aspecto:

<init-param> 
    <param-name>suppressSmap</param-name> 
    <param-value>false</param-value> 
</init-param> 

De https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html

suppressSmap - se debe suprimir la generación de información para la SMAP JSR45 depuración? verdadero o falso, predeterminado falso.

0

Si está utilizando el depurador IntelliJ se puede obtener el valor de un atributo individual, poniendo un punto de interrupción en el interior de JSP y la evaluación de la expresión this.jspContext.request.getAttribute("attributeName").

Tenga en cuenta que esto puede devolver un tipo de objeto Java, y puede que tenga que convertirlo al tipo correcto. Además, si ejecuta un Tomcat remoto, IDEA no alcanzará ningún punto de interrupción, por lo que deberá iniciar Tomcat en modo de depuración desde IDEA.