如果您使用的是Intellij调试器,则可以通过在JSP中放置断点并评估表达式来获取单个属性的值 this.jspContext.request.getAttribute("attributeName") 。
this.jspContext.request.getAttribute("attributeName")
请注意,这可能会返回Java对象类型,您可能必须将其强制转换为正确的类型。此外,如果启动远程Tomcat,IDEA将不会遇到任何断点,因此您需要从IDEA内部以调试模式启动Tomcat。
无论如何,您需要在IDEA中启动Tomcat,而不是从远程Tomcat启动。
请确保,在你tomcat的 的conf / web.xml文件 的 suppressSmap 强> 是 的 不 强> 启用,因为IntelliJ的调试器需要支持JSR45。
它应该如下所示:
<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 - 是否应该抑制JSR45调试的SMAP信息的生成? true或false,默认为false。
对于问题的第二部分(“web-inf下的jsp文件将无法由用户直接访问”),这是正确的。要允许用户访问WEB-INF文件夹中的JSP文件,需要在每个JSP页面的web.xml文件中创建servlet-mapping条目。
对于Intellij中的JSP调试,有一些配置必须按顺序排列。 Intellij总是允许您在JSP行上添加断点这一事实并不一定意味着您已经配置了JSP调试。在下面我指的是Intellij 8配置,w.r.t。在以前的版本中,您需要执行类似的操作,因为概念是相同的。
要启用JSP调试,您必须执行两个步骤:在项目中设置Web应用程序配置并添加Web应用程序服务器配置。
Web应用程序配置 :为了进行JSP调试,您必须在项目结构中有一个“eb”面,指向正确的web.xml文件。根据您使用的Web应用程序结构的类型,Intellij可能会自动检测构面(无论如何要检查它已完成的内容),或者您可能需要手动添加它。请记住在“NVA EE构建设置”选项卡中设置为“可用的Web面分解目录”。如果你不想要重复,一个技巧就是启用它并指向你现有的目录。
(Web)应用程序服务器 :转到“配置配置”,您必须添加配置应用程序服务器,而不是像任何其他应用程序一样启动Web服务器。通过这种方式,Intellij将能够拦截JSP调用。在应用程序服务器列表中,您应该具有默认的Tomcat。在执行此操作之前,请确保已安装本地Tomcat,并在添加Web应用程序服务器时指向该安装。最后一个技巧是进入“部署”选项卡并选择“部署源”,即您在上一步中配置的相同方面。
如果您想使用其他Web应用程序服务器,我使用相同的配置,我使用最新的Caucho Resin版本测试它并且调试工作正常(它没有使用之前的Intellij和Resin组合)。
如果您没有在要添加的可用应用程序服务器列表中看到Tomcat,请检查一般Intellij设置窗格中的插件:在最新版本中,越来越多的功能变得“易于使用”,甚至非常基本的功能也可能被禁用;这个插件叫做“omcat integration”。
最后,JSP文件需要在WEB-INF下进行调试肯定是不正确的。