使用外置的Servlet容器
步骤:
1. 创建一个war项目
2. 将嵌入式的Tomcat指定为provided
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
3. 创建一个ServletInitializer
类 extends SpringBootServletInitializer
,并调用configure
方法
4. 创建好目录结构和测试程序
(1)创建好后需要另外生成webapp
目录和web.xml
文件:
Project Structure - Modules - web - Web Resource Directories:生成webapp目录
Project Structure - Modules - web - Deployment Descriptors:点+号生成web.xml文件,指定路径为:src\main\webapp\WEB-INF\web.xml
(2)创建Tomcat服务器
(3)在主配置文件application.properties
中设置jsp的前后缀
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
(4)创建/hello
请求的Controller
方法,将数据放到model
中
(5)在页面使用${}
调用model
中的数据
具体代码:
ServletInitializer
:(使用Spring Initializer
创建项目时,Packaging
选择War
,会自动生成该类)
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBoot04WebJspApplication.class);
}
}
HelloController
:
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model){
model.addAttribute("msg", "你好");
return "success";
}
}
hello.jsp
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>Hello JSP</h1>
<a href="abc">abc</a>
</body>
</html>
success.jsp
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>Success</h1>
<h3>${msg}</h3>
</body>
</html>
application.properties
:
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp