前言
spring-boot 支持多种模版引擎包括:
FreeMarker
Groovy
Thymeleaf
Velocity
-
Jsp
其中官方是推荐使用Thymeleaf
,而Jsp
官方不推荐,原因是spring-boot创建的项目在src/main/resources
下有个templates
目录用于放模板文件,而jsp
页面是放在webapp目录下,spirng-boot没有这样的目录。但是企业用jsp用的很多,所以还是可以学习一下的。
正文
在pom.xml
中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
在application.properies
中加入如下配置,指定jsp页面的目录和后缀
#配置要获取的信息
com.mlin.hello=hello,mlin
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
新建文件UserController.java
,添加如下代码:
@Controller
public class UserController {
@Value("${com.mlin.hello}")
private String hello; //获取配置文件的信息:mlin,hello
@RequestMapping("/index")
public ModelAndView index(){
// 默认会去寻找配置文件配置的 spring.view.prefix 目录下的页面
// 即/WEB-INF/jsp/index.jsp
ModelAndView modelAndView = new ModelAndView("index");
modelAndView.addObject("msg",this.hello);
return modelAndView;
}
}
在 src/main
下面创建 webapp/WEB-INF/jsp
目录存放jsp页面,新建index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Spring Boot jsp Sample</title>
</head>
<body>
Message: ${msg}
</body>
</html>
把pom.xml
文件中的jar改成war,这样才可以支持jsp
<packaging>war</packaging>
启动服务,浏览器输入:http://localhost:8080/index

总结
在实践过程中发现如下问题
当引入的依赖tomcat-embed-jasper
指定范围是provide
的时候,右键启动类一直报404找不到页面错误,不指定则运行正常。寻找资料发现前辈们的总结如下:
指定provided时:
- 右键运行启动类,访问页面报404错误
- 使用
spring-boot:run
运行正常 - 打包成jar,通过
java -jar xxxxx.jar
运行报错 - 打包成war,通过
java -jar xxxxx.war
运行正常
不指定provided时
- 右键运行启动类,访问页面正常
-
spring-boot:run
运行 访问页面正常 - 打包成jar,通过
java -jar xxxxx.jar
运行报错 - 打包成war,通过
java -jar xxxxx.war
运行正常
原创作者:梦凌小样
作品链接:https://www.jianshu.com/p/891c3e401e2f【原创不易,转载请注明出处,感谢理解】
一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友
网友评论