【问题标题】:Tomcat doesn't interpret jsp syntaxTomcat 不解释 jsp 语法
【发布时间】:2016-03-14 01:45:09
【问题描述】:

在 Eclipse 中,我创建了一个新的动态 Web 项目。转换为 maven 后,我添加了一个 tomcat v8 服务器进行部署。但从一开始就可以显示纯 html 代码。似乎所有的 jsp 语法都没有被解释和忽略。

Home.jsp

<html>
    <body>
        <jsp:include page="navigation.jsp"></jsp:include>   
        <c:forEach begin="1" end="3" var="Test">
            <c:out value="${val}"/>
        </c:forEach>
    </body>
</html>

导航.jsp

<nav>
    <div>Navigation</div>
</nav>

这不会在浏览器中显示任何内容。添加jsp指令后

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

显示带有纯 html 标记的整个 jsp 文件。 有什么建议缺少什么吗?

POM.xml

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <servlet>
        <servlet-name>website</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/website.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

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

    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <scripting-invalid>true</scripting-invalid>
        </jsp-property-group>
    </jsp-config>

</web-app>

【问题讨论】:

  • 为什么将*.jsp映射到springDispatcherServlet?你能试着从&lt;servlet-mapping&gt; &lt;servlet-name&gt;website&lt;/servlet-name&gt; bloc 中删除&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt; 行吗?
  • 太棒了,现在可以使用了。

标签: java spring maven jsp tomcat8


【解决方案1】:

您明确地将 *.jsp 映射到 SpringFramework DispatcherServlet。我不知道你为什么写这个,但这是发生这种情况的原因:jsp 文件通常由具有最低优先级的 tomcat 默认服务器解释。如果有任何其他 servlet 绑定它们,则其他 servlet 将获取它们。

解决方法是只使用:

<servlet-mapping>
    <servlet-name>website</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-17
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多