有人知道如何在IntelliJIDEA中调试JSP吗?当我在JSP文件中设置断点时,这些断点似乎从未生效。调试器从未命中它们。IDEA似乎认为断点是有效的。我确实看到在我放置断点的行的左侧放置了一个红点。我在IntelliJ论坛中读到,JSP文件需要在web-inf下才能进行调试。但是我也读到放在web-inf下的JSP文件不能被用户直接访问。我不确定谁是对的。
JSP
lxkprmvk1#
对于Intellij中的JSP调试,有一些配置必须按顺序进行。Intellij总是允许您在JSP行上添加断点的事实并不一定意味着您已经配置了JSP调试。在下面我将参考Intellij 8配置,相对于以前的版本,您将需要执行类似的操作,因为概念是相同的。要启用JSP调试,必须执行两个步骤:在项目中设置Web应用程序配置并添加Web应用程序服务器配置。
如果您想使用另一个Web应用服务器,同样的配置也可以工作,我用最新的Caucho Resin版本测试了它,调试工作正常(以前的Intellij和Resin组合没有)。如果在要添加的可用应用服务器列表中没有看到Tomcat,请检查常规Intellij设置窗格中的插件:在最新的版本中,越来越多的功能已经成为“可插入的,”甚至非常基本的功能也可能被禁用;这个插件叫做“Tomcat集成”。最后,JSP文件需要在WEB-INF下才能进行调试肯定不是真的。
yhuiod9q2#
对于远程JSP调试(也适用于localhost),您需要安装JSR45 support plugin。请注意,此功能仅在IntelliJ的Ultimate版本中受支持,社区版本不受支持。1.转到首选项***〉插件,搜索JSR 45插件,然后启用它。1.创建运行配置:运行〉运行配置〉单击+按钮,并选择JSR 45兼容服务器***,然后在打开的对话框中,选择远程,并设置服务器主机和端口。设置应用程序服务器:通用应该可以正常工作。1.确保在启动/配置*〉*调试*中设置了正确的端口。1.打开模块设置(项目文件夹上的F3),在Facet下添加Web Facet,并在Web资源目录下指定JSP根文件夹。1.单击**配置...**按钮,然后选择包含JSP所依赖的Bean、类和库的文件夹。现在JSP断点应该可以工作了,前提是您使用proper debug arguments启动服务器。
localhost
另请参阅:
qojgxg4l3#
无论如何,您需要在IDEA中启动Tomcat,而不是从远程Tomcat启动。
ggazkfy84#
请确保在tomcat的 conf/web.xmlsuppressSmap中未启用,因为IntelliJ的调试器需要支持JSR 45。它应该如下所示:
<init-param> <param-name>suppressSmap</param-name> <param-value>false</param-value> </init-param>
从https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html开始suppressSmap -是否应禁止生成用于JSR 45调试的SMAP信息?true或false,默认值为false。
db2dz4w85#
如果使用Intellij调试器,则可以通过在JSP中放置断点并计算表达式this.jspContext.request.getAttribute("attributeName")来获取单个属性的值。注意这可能会返回一个Java对象类型,你可能需要将它转换为正确的类型。另外,如果你启动一个远程Tomcat,IDEA不会遇到任何断点,所以你需要在IDEA内部以调试模式启动Tomcat。
this.jspContext.request.getAttribute("attributeName")
wnavrhmk6#
对于问题的第二部分(“用户无法直接访问web-inf下的jsp文件”),您的回答是正确的。要允许用户访问WEB-INF文件夹中的JSP文件,需要在每个JSP页的web.xml文件中创建servlet和servletMap条目。
6条答案
按热度按时间lxkprmvk1#
对于Intellij中的JSP调试,有一些配置必须按顺序进行。Intellij总是允许您在JSP行上添加断点的事实并不一定意味着您已经配置了JSP调试。在下面我将参考Intellij 8配置,相对于以前的版本,您将需要执行类似的操作,因为概念是相同的。
要启用JSP调试,必须执行两个步骤:在项目中设置Web应用程序配置并添加Web应用程序服务器配置。
如果您想使用另一个Web应用服务器,同样的配置也可以工作,我用最新的Caucho Resin版本测试了它,调试工作正常(以前的Intellij和Resin组合没有)。
如果在要添加的可用应用服务器列表中没有看到Tomcat,请检查常规Intellij设置窗格中的插件:在最新的版本中,越来越多的功能已经成为“可插入的,”甚至非常基本的功能也可能被禁用;这个插件叫做“Tomcat集成”。
最后,JSP文件需要在WEB-INF下才能进行调试肯定不是真的。
yhuiod9q2#
对于远程JSP调试(也适用于
localhost
),您需要安装JSR45 support plugin。请注意,此功能仅在IntelliJ的Ultimate版本中受支持,社区版本不受支持。1.转到首选项***〉插件,搜索JSR 45插件,然后启用它。
1.创建运行配置:运行〉运行配置〉单击+按钮,并选择JSR 45兼容服务器***,然后在打开的对话框中,选择远程,并设置服务器主机和端口。设置应用程序服务器:通用应该可以正常工作。
1.确保在启动/配置*〉*调试*中设置了正确的端口。
1.打开模块设置(项目文件夹上的F3),在Facet下添加Web Facet,并在Web资源目录下指定JSP根文件夹。
1.单击**配置...**按钮,然后选择包含JSP所依赖的Bean、类和库的文件夹。
现在JSP断点应该可以工作了,前提是您使用proper debug arguments启动服务器。
另请参阅:
qojgxg4l3#
无论如何,您需要在IDEA中启动Tomcat,而不是从远程Tomcat启动。
ggazkfy84#
请确保在tomcat的 conf/web.xmlsuppressSmap中未启用,因为IntelliJ的调试器需要支持JSR 45。
它应该如下所示:
从https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html开始
suppressSmap -是否应禁止生成用于JSR 45调试的SMAP信息?true或false,默认值为false。
db2dz4w85#
如果使用Intellij调试器,则可以通过在JSP中放置断点并计算表达式
this.jspContext.request.getAttribute("attributeName")
来获取单个属性的值。注意这可能会返回一个Java对象类型,你可能需要将它转换为正确的类型。另外,如果你启动一个远程Tomcat,IDEA不会遇到任何断点,所以你需要在IDEA内部以调试模式启动Tomcat。
wnavrhmk6#
对于问题的第二部分(“用户无法直接访问web-inf下的jsp文件”),您的回答是正确的。要允许用户访问WEB-INF文件夹中的JSP文件,需要在每个JSP页的web.xml文件中创建servlet和servletMap条目。