Project Setup
From the CLI or http://start.spring.io/, initialize a project with “web” capability. What ends up happening is addition of the dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Start with this directory structure. Be sure the controller (and any other Spring beans) are located under where the Application class (JspDemoApplication in this example) is.
... src/ main/ java/ org/ van/ jspdemo/ JspDemoApplication.java controller/ DemoController.java resources/ application.properties webapp/ WEB-INF/ jsp/ demoindex.jsp
Controller and View
Add a controller file DemoController.java (see tree above for location):
...
@Controller
@RequestMapping("/jspdemo")
class DemoController {
@RequestMapping("/index")
public String index(@RequestParam("name") String name, Model model) {
model.addAttribute(name.toUpperCase());
return "demoindex"; // view/JSP name
}
}
Then the view file demoindex.jsp (see tree above for location). NOTE that the webapp/WEB-INF/jsp subdirectory needs to be created.
<html>
<div>
Hello, ${name}.
</div>
</html>
Add support for JSP
Add these dependencies:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>provided</scope>
</dependency>
Add these to application.properties:
spring.view.prefix: /WEB-INF/jsp/
spring.view.suffix: .jsp