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

无法在Spring Boot应用程序中为JSP提供服务

须原
2023-03-14


我已经尝试了几个使用Spring Boot服务JSP页面的教程。它们都返回404页未找到错误。为了克服已知的限制,我使用了一个WAR包装,具有以下依赖关系:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

我已经定义了JSP页面在应用程序中的路径。特性:

spring.mvc.view.prefix= /WEB-INF/jsp/
spring.mvc.view.suffix= .jsp

请求JSP页面时,将显示以下警告:

WARN 10251 --- [io-8080-exec-11] o.s.w.s.r.ResourceHttpRequestHandler     : Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/hello.jsp]

在Spring Boot 2中已弃用JSP吗?你有任何关于JSP的Spring Boot 2工作示例吗?

共有3个答案

夏志国
2023-03-14

不幸的是,我找不到任何SpringBoot2示例能够为JSP页面提供服务,因为它们都返回404错误。作为一种解决方法,我已将应用程序配置为部署在WildFly上,如本教程所述,并在WildFly上使用JSP运行我的应用程序。

蓬弘
2023-03-14

我用的是Intellij IDEA我发现我们不能直接运行SpringBootApplication主类。我们需要让专家来做这项工作。

简短的解决方案:maven通过下面的命令从您的模块根目录运行您的应用程序

mvn clean package spring启动:运行

您还可以使用Maven添加运行配置,这样您就不必每次都键入命令。

有些人说JSP文件夹应该放在src/main/资源/META-INF/资源/WEB-INF/jsp下。这确实解决了Spring引导应用程序运行问题,但是,当您使用tomcat运行应用程序时,它会失败。因此,如果要将应用程序部署到Tomcat,我们仍然需要保留该结构。

戚奇略
2023-03-14

您能像这样尝试在依赖项中添加作用域吗

<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
   <scope>provided</scope>
</dependency>
 类似资料:
  • 我是新春尝试简单的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

  • 我正在探索如何从JAR文件提供JSP。我使用的是SpringBoot 1.5.10。释放 我提到了这个 包括位于src/main/Resources/META-INF/Resources/WEB-INF/jsp/位置的JSP 视图解析器的前缀为 /WEB-INF/jsp/,后缀为. jsp 奇怪的事情是,当我运行项目作为启动应用程序或Java应用程序时,我能够击中控制器并得到所需的JSP文件作为响

  • 我已在单独的Weblogic域中成功配置了SAML 2.0身份提供程序 我们在另一个域的Weblogic中部署了一个ADF应用程序,该应用程序具有非SAML基于表单的身份验证(ReadOnlySQLAuthenticator用于验证凭据) 我想将第二个域配置为服务提供者(以使现有应用程序能够使用身份提供者登录)。 我做了以下工作: 配置SAML 2.0 Identity Asserter 在服务器

  • 我使用Angular CLI构建了一个Angular2应用程序,其中包含许多路由。应用程序工作绝对正常。我可以使用链接,使用网址或使用路由器的导航功能导航到所有路线。我可以随时刷新任何路线上的浏览器页面。 但是,当我试图从dist/index.html使用单独的Web服务器(dev上的括号IDE服务器或生产中的Express/nginx/apache2)为我的应用程序提供服务时,应用程序路由行为是

  • 我正在构建一个应用程序,其中我使用的是来自此教程链接的融合提供程序代码,但当我想运行我的应用程序时,我收到以下错误: com.android.build.api.transform.transformException:com.android.ide.common.Process.processException:org.gradle.Process.internal.execexception:

  • 我正在尝试在STS中创建一个默认的Spring Boot应用程序。它在STS文件中创建了一个“Spring starter Project”-->。创建项目后未进行任何更改。错误立即显示在POM文件中...