当前位置: 首页 > 知识库问答 >
问题:

Spring Boot在WAR文件中找不到JSP页面

卫乐童
2023-03-14

当运行一个Spring Boot项目(java-jar /path/to/war.war)时,找不到. jsp文件。

用@响应体注释的方法工作正常。视图解析器正在想出JSP页面的正确路径,但是找不到它们。这个项目只有一个配置类,没有web.xml.

配置类:

@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@ComponentScan (basePackages = "org.ghc.security.web")
class ScMain extends WebMvcConfigurerAdapter {


    // SpringBoot BootStrap...
    static void main (String[] args) {
        ApplicationContext ctx = SpringApplication.run (ScMain, args)

        System.out.println("Let's inspect the beans provided by Spring Boot:");

        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        beanNames.each { beanName ->
            System.out.println(beanName);
        }
    }


    @Bean
    InternalResourceViewResolver internalResourceViewResolver () {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver()
        viewResolver.setPrefix("/WEB-INF/jsp/")
        viewResolver.setSuffix(".jsp")
        viewResolver
    }
}

控制器

@Controller
class Running {

    @RequestMapping ("/alive")  // This works fine
    @ResponseBody
    String amIAlive () {
        "ALIVE!"
    }


    @RequestMapping ("/alive/page")  // Path to page resolved, but file not found!
    ModelAndView amIAlivePage () {
        new ModelAndView("alivepage")
    }
}

错误日志

2013-11-25 09:08:28.714错误1549---[tp1945397783-20]组织。阿帕奇。贾斯珀。servlet。JspServlet:PWC6117:File“/Users/node42/Development/mock security ui/build/libs/mock-security-ui-2.06-SNAPSHOT.war/WEB-INF/jsp/alivepage.jsp”未找到

通往世界的道路。日志条目中的war文件正确,war文件(WEB-INF/jsp/alivepage.jsp)中的路径正确。无论是使用Jetty还是Tomcat,响应都是相同的(上面的日志来自Jetty)。我还尝试过不使用视图冲突解决程序、如上所述指定视图冲突解决程序,或通过属性设置视图冲突解决程序。我完全不知所措,因为除了这一个小细节,一切看起来都在工作。控制器中的@ResponseBody注释方法工作良好。

如果有人有任何建议,我当然会感谢您的意见!

共有3个答案

梁祯
2023-03-14

我有一个类似的问题,这是由默认的servlet没有被映射引起的。我必须在我的扩展委托WebMvc配置类中这样做:

@Override
protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}
方恺
2023-03-14

我认为在Spring Boot中,可执行归档文件中的JSP还没有得到完全支持(它在列表中),所以我会先尝试使用a)已部署的WAR,和/或b)已分解的归档文件(或从IDE运行),或从源代码运行。一旦这一点起作用,您可能仍然需要等待添加完整的JSP支持(欢迎提供贡献),但至少您会知道它是有效的。你在部署的战争中看到的错误(没有地图)表明还有其他事情在发生。请注意,如果您想比较一些东西,Spring Boot中有一个JSP示例——在一定程度上起作用(JSP已解析并呈现)。

编辑:Spring标记库、JSTL和EL支持似乎在上面的示例中起作用。我刚刚对它进行了更新,添加了JSTL,并从IDE进行了测试,作为一个可执行的WAR。

冯霖
2023-03-14

我也有同样的问题,在我的例子中,这是因为我在类路径中缺少一个库。

Spring Boot不包括Jasper作为默认值,因此JSP渲染不起作用,除非您显式地包括库:

对于Gradle:

compile("org.apache.tomcat.embed:tomcat-embed-jasper")

对于Maven:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
 类似资料:
  • 我正在使用J2EE(使用spring和JSP)建立一个网站。我有像client.jsp和user.jsp的多页。每一页都有一个页眉、一个内容和一个页脚。 因此,我想做的是在每个jsp文件(客户机或用户)中包含页眉和页脚,但每个文件都有一个特定的页眉和脚注。比方说,header_client。jsp和header_footer.jsp。 为了包括这个,我正在做的: 但是,如果此标头不存在,我想加载一

  • 方法:获取 现状:404 注意:URL应该是http://localhost:8080/dragonline/resources/img/icon.png()

  • 问题内容: 我在JBoss 4.3-eap上部署带有捆绑的war,jar和配置文件(.properties文件)的耳朵时遇到问题。这是我的耳朵结构: 我的jboss-app.xml中包含以下内容: 我的application.xml看起来像这样: 基本上,在部署耳朵时,我遇到了一个问题,其中我的一场大战无法在文件(r)中找到类。我认为这是由于战争没有找到该库,即使它在文件夹/ classpath中

  • 我是新春尝试简单的webapp。 使用springboot 2.1.0application.properties如下文件。我在src/main/webapp/WEB-INF/jsp中有jsp文件 我的控制器是。 当我将jsp文件放在/main/resources/META-INF/resources/WEB-INF/jsp中时,它可以正常工作,否则会出现以下错误 pom还具有tomcat嵌入ja

  • 我正在生成。Liferay portlet中的svg文件将保存在服务器(JBoss AS)上的svg文件夹中。这些文件生成并保存在中。java类,如下所示: 该文件保存在server/bin/svg目录中。但是当我试图访问我的数据库中的文件时。jsp页面,它似乎找不到文件(可能正在另一个目录中查找)。我怎样才能告诉它,所需的文件在哪里?我可以使用绝对路径,将其存储在某个位置并将其传递给。jsp页面

  • 我在应用程序中遵循了spring boot的官方文件和包结构。但我仍然收到一个白标签页面错误。大多数答案和建议都不能解决这个问题。 这可能是spring boot中的错误吗? 下面是我如何放置代码以及文件和文件夹的排列结构。 应用Java语言 控制器 主页jsp 应用属性 pom.xml 注意:使用Visual Studio代码1.52.1版