如何在Spring Boot中启用JSP页面?

时间:2016-07-27 11:55:17

标签: spring jsp spring-mvc spring-boot

我想要显示一个简单的JSP页面。我在Tomcat 8服务器上使用Spring Boot。

test.jsp的:

<!DOCTYPE html>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

我在application.properties

中配置了JSP的路径
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

我的项目结构(maven):

src/main/java
src/main/resources
WebContent/WEB-INF/test.jsp

控制器:

@RestController
@RequestMapping("/web/test")
public class MyController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String getMissingContent(ModelMap model) {
        model.put("time", new Date());
        model.put("message", "testmsg");
            return "test";
    }
}

@SpringBootApplication
public class MyConfig extends SpringBootServletInitializer {
}

结果:我没有看到HTML页面,只看到字符串&#34; test&#34;在一个空白页面上。为什么呢?

2 个答案:

答案 0 :(得分:3)

只需将@RestController转换为您@Controller的{​​{1}}即可。观察到的行为的原因是MyController@RestController之间的差异。根据{{​​3}}:

  

[@ RestController]是一个便利注释,它本身用@Controller和@ResponseBody注释。

由于@Controller注释,方法的返回值被视为响应本身。

Spring MVC&#39; @ResponseBody注释将期望方法的返回值是要呈现的视图的名称(以便呈现的视图可以作为响应主体返回)。如果正确设置了视图的前缀和后缀,则模型将传递给视图并呈现视图。

在您的情况下,您打算将模型传递给&#34;测试&#34;要呈现(并返回)的视图,但隐藏的@Controller破坏了您的计划并且&#34;测试&#34; (字符串)按原样返回,作为响应正文。

答案 1 :(得分:1)

@RestController会将“测试”视为回应本身

@Controller会将“test”视为要呈现的视图。

如果前缀和后缀设置正常,则应该呈现“测试”视图。