为什么Spring中找不到JSP?文件存在

问题描述 投票:0回答:3

在一个非常基本的应用程序中,我有如下的 sayHelloController.java

@Controller
public class SayHelloController {


    @RequestMapping("say-hello-jsp")
    public String sayHelloJsp() {
        return "sayHello";
    }
}

具有以下应用程序属性:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
logging.level.org.springframwork=debug

和 sayHello.jsp:

 <html>
    <head>
        My first JSP file!
    </head>
    <body>
        <h1>Hello</h1>
        <p>
            This is the text we want to show <br/>
        <p>
    </body>
 </html>

当我访问 http://localhost:8080/say-hello-jsp 时,我收到 404 并且日志显示:

: GET "/say-hello-jsp", parameters={}
: Mapped to com.in28minutes.springboot.myfirstwebapp.hello.SayHelloController#sayHelloJsp()
: Selected 'text/html' given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, application/signed-exchange;v=b3;q=0.9, */*;q=0.8]
: View name 'sayHello', model {}
: Forwarding to [/WEB-INF/jsp/sayHello.jsp]
: "FORWARD" dispatch for GET "/WEB-INF/jsp/sayHello.jsp", parameters={}
: Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]
: "Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/sayHello.jsp]"
: Resource not found

这没有意义,因为文件存在,证明:

macbook-air:jsp gerald$ pwd
/Users/gerald/IdeaProjects/myfirstwebapp/src/main/resources/META-INF/resources/WEB-INF/jsp
macbook-air:jsp gerald$ ls
sayHello.jsp

另外,我在我的 pom.xml 中添加了 jasper 作为依赖项

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

为什么找不到文件?

java spring spring-boot spring-mvc jsp
3个回答
1
投票

在这里找到答案:https://youtrack.jetbrains.com/issue/IDEA-158125/Spring-boot-run-configuration-does-not-find-resources-in-META-INF,谢谢安迪·威尔金森:

问题是 Jasper 被标记为 pom 中提供的,所以它是 不在类路径上。我相信已经有一个 IDEA 问题待解决 那个问题。它会导致 Spring Boot 沿着代码路径前进 各种JSP相关的点滴都没有启用。你可以避免它 通过从你的 pom 中删除提供的,因为它只是 构建将部署到 servlet 的 war 文件时必需的 容器。

我已经删除了提供的,运行了 mvn clean (仅重新运行项目不起作用),然后它就工作了。

奇怪的是这个基本问题在 6 年后仍然存在于 IntelliJ 中(链接来自 2016 年)


0
投票

一旦我使缓存无效并重新启动 IDE,Krowar 的上述答案就解决了我的解决方案。


0
投票

@Krowar 我也有同样的问题,但是使用 Eclipse(2024-03)。我尝试过-

  1. 重新启动IDE
  2. 代码调试 - 一切正常
  3. 在 ide 中的问题部分 - 没问题

如果有人能指出一些方向,请...! 代码快照与之前用户粘贴的相同。

@java @spring-boot @Eclipse

© www.soinside.com 2019 - 2024. All rights reserved.