Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging intellijidea中的JSP调试_Debugging_Jsp_Intellij Idea - Fatal编程技术网

Debugging intellijidea中的JSP调试

Debugging intellijidea中的JSP调试,debugging,jsp,intellij-idea,Debugging,Jsp,Intellij Idea,有人知道如何在IntelliJIDEA中调试JSP 当我在JSP文件中设置断点时,这些断点似乎永远不会生效。调试器从未命中它们。IDEA似乎认为断点是有效的。我确实看到一个红点放在我放置断点的线的左边 我在IntelliJ论坛上读到,JSP文件需要在web inf下才能进行调试 但是我还读到,用户无法直接访问放置在web inf下的JSP文件 我不确定谁是对的 对于问题的第二部分(“用户无法直接访问放置在web inf下的jsp文件”),这是正确的。为了允许用户访问WEB-INF文件夹中的JSP

有人知道如何在IntelliJIDEA中调试
JSP

当我在
JSP
文件中设置断点时,这些断点似乎永远不会生效。调试器从未命中它们。IDEA似乎认为断点是有效的。我确实看到一个红点放在我放置断点的线的左边

我在IntelliJ论坛上读到,
JSP
文件需要在web inf下才能进行调试

但是我还读到,用户无法直接访问放置在web inf下的
JSP
文件


我不确定谁是对的

对于问题的第二部分(“用户无法直接访问放置在web inf下的jsp文件”),这是正确的。为了允许用户访问WEB-INF文件夹中的JSP文件,需要在WEB.xml文件中为每个JSP页面创建servlet和servlet映射条目

对于Intellij中的JSP调试,必须按顺序进行一些配置。Intellij始终允许您在JSP行上添加断点,这并不一定意味着您已经配置了JSP调试。在下面我提到Intellij 8配置,w.r.t.以前的版本中,由于概念相同,您需要执行类似的操作

为了启用JSP调试,您必须执行两个步骤:在项目中设置web应用程序配置和添加web应用程序服务器配置

Web应用程序配置:为了进行JSP调试,您的项目结构中必须有一个“Web”方面,指向正确的Web.xml文件。根据您使用的web应用程序结构的类型,Intellij可能会自动检测到该方面(无论如何都要检查它所做的工作),或者您可能需要手动添加它。记住在“JavaEE构建设置”选项卡中设置为可创建的“创建web目录”;如果您不想重复,一个技巧就是启用它并指向您已经存在的目录

(Web)应用程序服务器:转到“编辑配置”,在那里您必须向应用程序服务器添加配置,而不是像其他任何应用程序一样将Web服务器作为应用程序启动。通过这种方式,Intellij将能够拦截JSP调用。在应用服务器列表中,您应该有默认的一个,Tomcat。在执行此操作之前,请确保安装了本地Tomcat,并在添加web应用程序服务器时指出这一点。最后一个技巧是转到“部署”选项卡,并选择在上一步中配置的同一方面作为“部署源”

如果您想使用另一个web应用程序服务器,同样的配置也可以使用,我用最新的Caucho Resin版本对其进行了测试,调试工作正常(以前的Intellij和Resin组合没有这样做)

如果在可添加的应用服务器列表中没有看到Tomcat,请检查通用Intellij设置窗格中的插件:在最新版本中,越来越多的功能已变得“可插入”,甚至非常基本的功能也可能被禁用;这个插件叫做“Tomcat集成”


最后,JSP文件需要在WEB-INF下才能进行调试肯定不是真的。

无论如何,您需要在IDEA中启动Tomcat,而不是从远程Tomcat启动。

对于远程JSP调试(也适用于
本地主机
),您需要安装ㄧ . 请注意,此功能仅在IntelliJ的最终版本中受支持,而在社区版中不受支持。

  • 转到首选项插件,搜索JSR45插件,然后 启用它
  • 创建运行配置:运行运行配置>单击+按钮,选择JSR45兼容服务器,然后在打开的对话框中选择远程,并设置服务器主机和端口。设置应用服务器:通用应该可以正常工作
  • 确保在启动/配置中设置了正确的端口

  • 打开模块设置(F3在项目文件夹中),在Facets下添加一个Web Facet,并在Web资源目录下指定JSP根文件夹

  • 单击配置…按钮,选择包含JSP所依赖的bean、类和库的文件夹

  • 现在JSP断点应该可以工作了,前提是您使用启动服务器

    如果已启用自动导入的maven项目,则可能需要禁用自动导入,因为每次触发自动导入时,库设置都将重置


    请确保tomcat的conf/web.xmlsuppressMap未启用,因为IntelliJ的调试器需要支持JSR45

    应该是这样的:

    <init-param>
      <param-name>suppressSmap</param-name>
      <param-value>false</param-value>
    </init-param>
    
    
    抑制器
    假的
    

    suppressSmap-是否应禁止为JSR45调试生成SMAP信息?true或false,默认为false


    如果使用Intellij调试器,则可以通过在JSP中放置断点并计算表达式
    this.jspContext.request.getAttribute(“attributeName”)
    来获取单个属性的值


    请注意,这可能会返回Java对象类型,您可能需要将其转换为正确的类型。此外,如果您启动远程Tomcat,IDEA将不会遇到任何断点,因此您需要从IDEA内部以调试模式启动Tomcat。

    刚刚选中-它对我有效。运行Tomcat 5的IntelliJ 6.0.5。JSP在resources文件夹中,没有什么特别的。您需要提供有关配置的更多信息。尝试创建一个简单的项目,并用不同的Tomcat测试它