使用内置的Tomcat容器时如果需要使用JSP视图,需要在pom.xml中添加如下依赖。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
如果还需要使用Jstl,则还需要添加Jstl的依赖。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
会自动创建InternalResourceViewResolver,它允许我们通过如下方式指定JSP视图的前缀和后缀(默认不指定时两者都为空)。
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
基于上面的配置,当返回的视图名称是abc时,寻找的JSP文件将是/WEB-INF/jsp/abc.jsp
,Maven应用中的全路径是src/main/webapp/WEB-INF/jsp/abc.jsp
。假设现有如下Controller,当访问/jsp
时将返回/WEB-INF/jsp/index.jsp
文件的内容,当访问/jsp/second
时将返回/WEB-INF/jsp/second.jsp
文件的内容。
@Controller
@RequestMapping("jsp")
public class JspController {
@GetMapping
public String index() {
return "index";
}
@GetMapping("second")
public String second(Map<String, Object> model) {
model.put("message", "helloWorld!");
model.put("list", Arrays.asList(1, 2, 3, 4, 5, 6));
return "second";
}
}