Spring Boot 使用 Jsp 视图

使用内置的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";
  }
}