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
Java JSP显示源代码而不是执行_Java_Jsp_Tomcat - Fatal编程技术网

Java JSP显示源代码而不是执行

Java JSP显示源代码而不是执行,java,jsp,tomcat,Java,Jsp,Tomcat,我是jsp新手,遇到了一些麻烦。最初,jsp文件和相关java类是在测试Tomcat服务器上构建和测试的。现在,他们已经被转移到另一台我认为是相同设置的服务器上(除了现在是linux而不是windows)。但是当访问jsp页面时,将显示源代码,而不是实际执行的jsp。我在谷歌上搜索了一段时间,但没有成功 以下是我正在测试的jsp文件的代码: <HTML> <BODY> Hello! The time is now <%= new java.util.Date()

我是jsp新手,遇到了一些麻烦。最初,jsp文件和相关java类是在测试Tomcat服务器上构建和测试的。现在,他们已经被转移到另一台我认为是相同设置的服务器上(除了现在是linux而不是windows)。但是当访问jsp页面时,将显示源代码,而不是实际执行的jsp。我在谷歌上搜索了一段时间,但没有成功

以下是我正在测试的jsp文件的代码:

<HTML>
<BODY>
Hello!  The time is now <%= new java.util.Date() %>
</BODY>
</HTML>
我曾认为这可能会解决问题,因为在web-INF文件夹中的web.xml文件中没有对我正在使用的jsp文件的引用,甚至没有以下代码片段:

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>logVerbosityLevel</param-name>
        <param-value>WARNING</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

jsp
org.apache.jasper.servlet.JspServlet
logVerbosityLevel
警告
3.
jsp
*.jsp
我尝试插入这些行并重新启动Tomcat,但没有成功。有什么想法吗?

看看上面写着“logverpositylevel”和“WARNING”的地方吗?将警告更改为调试。您还可以找到catalina.sh脚本和java命令,并确保启动选项中包含-DDEBUG标志

打开完整调试模式查看日志会告诉您在新服务器上启动Tomcat是否有任何问题

例如,您可能缺少依赖项或依赖项冲突,而这些依赖项冲突不会以信息较少的日志记录级别出现

最后,您是否尝试过一个简单的JSP测试页面

      <% out.println("Hello"); %>

如果您将其放入JSP并尝试加载它,您会看到JSP还是输出


您是否尝试过在请求中使用Tomcat端口?通常,这是8080。我认为其中一位评论者提到了这一点,这是一种可能性。

从回复标题中:

服务器Apache/2.2.3(CentOS)


这不是由,而是由。您根本没有将其部署到Tomcat。

我刚刚遇到了同样的问题,这就是我如何偶然发现这篇文章的原因。对我来说,问题在于卡塔利纳的家和卡塔利纳的基地之间的区别。我想很多人没有意识到这是两个不同的地方。在我的Ubuntu上,CATALINA_HOME在/usr/share/tomcat6中,而CATALINA_BASE在/var/lib/tomcat6中。这很重要,因为您需要将jsp文件放在CATALINA_库中。因此,事实上,我想说Tomcat没有找到您的代码,即使您的浏览器找到了该文件,并像其他文本文件一样愉快地为您显示它

希望这能帮助其他遇到同样问题的人——这是我第一次尝试发布有关StackOverflow的答案。

迁移java 6-->8,tomcat 5-->8 如果您在应用程序web.xml中有类似的内容

<!--need this so that this work:  jsp:include page="WEB-INF...xxx.jspf-->
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jspf</url-pattern>
</servlet-mapping>

jsp
*.jspf
这将产生显示源代码的JSP,而不是在Tomcat8上执行,因为它似乎覆盖了TomcatWebXML中关于JSP的内容

解决方案是在appweb.xml中删除此代码,并将所有内容放入tomcatweb.xml中,如:

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspx</url-pattern>
    <url-pattern>*.jspf</url-pattern>
</servlet-mapping>

jsp
*.jsp
*.jspx
*.jspf

您确定请求确实到达了Tomcat吗?前面还有其他Web服务器吗?servlet呢?它们能工作吗?JSP中到底有什么,浏览器中到底看到了什么?HTML源代码中到底是什么?(在浏览器中单击鼠标右键,选择“查看源代码”)我想知道您对“源代码”的确切含义。JSP标签?JSTL标签?艾尔?脚本?甚至HTML?您不需要发布完整的代码,只要显示行为的最小JSP文件就足够了。@Thilo:如果请求没有到达Tomcat,他就不会从JSP中看到任何东西,更不用说源代码了。然而,我希望OP在另一个Web服务器中而不是在Tomcat:)中删除JSP文件并不是显而易见的愚蠢。当我在浏览器中输入JSP文件的地址时,会显示JSP文件的源代码,而不是执行JSP。以下是我在浏览器中看到的前几行:@DJStroky:这还不够详细。您是在浏览器屏幕中还是在HTML源代码中看到的?如果在浏览器屏幕中,则意味着它已作为
文本/普通
发送,或者
等以某种方式被HTML转义(然后您应该在源代码页面中看到
等)。另外,我想知道HTTP响应头到底包含什么。请编辑您的问题,以添加我在本评论和上一评论中提出的所有问题的答案。“@Thilo:如果请求没有到达Tomcat,他就不会从JSP中看到任何东西,更不用说源代码了。不过,我希望OP在另一个Web服务器中而不是在Tomcat中删除JSP文件并不是显而易见的愚蠢:):-)
      <% out.println("Hello"); %>
<!--need this so that this work:  jsp:include page="WEB-INF...xxx.jspf-->
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jspf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspx</url-pattern>
    <url-pattern>*.jspf</url-pattern>
</servlet-mapping>