我使用嵌入式Tomcat(默认)启动并运行Spring Boot Web应用程序.当它提供JSP文件作为渲染我在控制器中指定的视图的一部分时,JSP不会这样呈现,而是打印出内容.例如:
的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>Test</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在浏览器中呈现视图时,将显示上面的内容,而不是预期的内容:
Test
Run Code Online (Sandbox Code Playgroud)
Nic*_*cek 98
确保您pom.xml指定Tomcat JSP依赖项,如下所示:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
嵌入式Tomcat似乎将JSP呈现视为可选.
如下所述,这个JAR有时也是必要的:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
(我添加了提供,因为这个JAR应该包含在servlet容器中.
Sez*_*rli 23
你需要一个而不是两个依赖项(jasper和jstl)来pom.xml实现这个目的.
<dependencies>
<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>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
小智 14
对我来说,就像Dan提到的一样.删除提供的范围.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
多谢你们!
小智 12
也为我工作,但我不得不删除
<scope>provided</scope>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Ara*_*lur 10
更好的是你可以使用gradle(它正赶上Maven).在build.gradle文件中使用此依赖项.
// JSP的必需依赖项
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'
Run Code Online (Sandbox Code Playgroud)
spring-boot-starter-tomcat,tomcat-embed-jasper和jstl依赖是在pom.xml。war.$MODULE_WORKING_DIR$“工作目录”。就是这样。
我认为你错过了一些配置,因为它很容易集成JSP只需遵循以下步骤
1 - tomcat-embad-jasper依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
2 - 添加以下配置是application.properties
spring.mvc.view.prefix: /
spring.mvc.view.suffix: .jsp
Run Code Online (Sandbox Code Playgroud)
这仍然有一些疑问,然后在链接下面查看它
原因是因为您使用的是注释 @RestController 而不是 @Controller
当您使用 RestController 注解类时,所有使用 @RequestMapping 注解的方法默认采用 @ResponseBody 语义。换句话说,您的方法 #index 将字符串 /webapp/WEB-INF/index.jsp 序列化为 JSON,而不是将其值映射到视图。
就像其中一个答案中提到的那样,它必须是
@Controller 公共类 YourController { ... }
| 归档时间: |
|
| 查看次数: |
65733 次 |
| 最近记录: |