Spring Boot整合模板引擎jsp
jsp也算是一种模板引擎吧。整合jsp前,先说一下运行SpringBoot项目的几种方式
1. 运行SpringBoot项目的几种方式
1.1 使用内嵌Tomcat运行项目
- 在IDE中右键运行启动类,也就是直接直接运行Appliction启动类中的main方法
- 使用
mvn spring-boot:run - 打成jar包,使用
java -jar xxx.jar - 打成war包,使用
java -jar xxx.war
1.2 内嵌Tomcat的属性配置
Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties 配置类中做了定义 ,我们只需要在application.properties中配置覆盖默认配置。
常用配置
#配置程序端口,默认为8080
server.port=8080
#用户绘画session过期时间,以秒为单位
server.session.timeout=
# 配置默认访问路径,默认为/
server.context-path=
# 配置Tomcat编码,默认为UTF-8
server.tomcat.uri-encoding=UTF-8
# 配置最大线程数
server.tomcat.max-threads=1000
1.3 使用外部Tomcat部署war包
将Spring Boot导出人war包直接放在Tomcat中部署,如果是使用的jsp作为模板引擎,也就是接下来做的。还需要做一些额外配置,具体配置继续看下面的操作。
1.4 总结
总结一下,运行一个Spring Boot项目至少有5种方法,下面就让jsp作为模板引擎的Spring Boot项目在这5种启动方式下正常运行吧。
2. 使用jsp作为模板引擎
项目结构如下:

2.1 引入依赖
pom.xml
<!--WEB支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--jsp页面使用jstl标签-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--用于编译jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- 部署到外部容器tomcat时用到 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
注意: tomcat-embed-jasper这个依赖如果设置依赖范围为provided在第1种第3种方式运行的进修会报错,用默认依赖范围就好,默认为compile,在使用Intellij Idea按照spring boot项目启动时,有如下发现,所以设置成provided就好,官方也推荐使用provided

2.2 设置打包方式
pom.xml
<!-- 打成jar包 -->
<packaging>jar</packaging>
<!-- 打成war包 -->
<packaging>war</packaging>
不同启动方式下的打包方式
- IDE中执行main方法 都可以
- 执行
mvn spring-boot:run都可以 - 执行
java -jar xxx.jarjar包 - 执行
java -jar xxx.warwar包 - 外部容器 war包
2.3 application.properties配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
2.4 编写控制器
编写一个测试用的控制器,其他引用类参考项目代码
@Controller
public class WelcomeController {
@GetMapping("/")
public String index(ModelMap model) {
System.out.println("demo/jsp/index");
DemoUser user = new DemoUser();
user.setName("张三abc");
user.setPassword("password-zhangsan");
user.setBirthday(new Date());
user.setDesc("我的描述");
user.setId(1001L);
model.addAttribute("user", user);
model.addAttribute("currentTime", new Date());
return "welcome";
}
}
2.5 编写jsp页面
略,参考代码 webapps/WEW-INF/jsp/welcome.jsp
2.6 编写启动类
@SpringBootApplication
public class JspApplication extends SpringBootServletInitializer {
// war启动 署到外部容器tomcat需要:
// 1)要实现SpringBootServletInitializer
// 2)覆盖该方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(JspApplication.class);
}
// jar启动
public static void main(String[] args) {
SpringApplication.run(JspApplication.class, args);
}
}
2.7 验证是否起作用
404

正常访问

3. 小结
项目源码 https://gitee.com/yysue/tutorials-java
5种启动方式小结:
- 内嵌容器,intellij idea中执行启动类main方法
- 单模块项目时,可正常访问
- 多模块项目时,404,将jsp文件移到如下目录结构,也可正常访问
这个帖子子就描述了这个问题,给出的方案是部署到外部容器中

- 内嵌容器,java -jar xxx.jar
- 按如下目录配置执行,可正常访问

- 其他情况下执行,404
- 按如下目录配置执行,可正常访问
- 内嵌容器,java -jar xxx.war,可正常访问
- 内嵌容器,mvn spring-boot:run,可正常访问
- 外部容器,war包放到tomcat的webapps目录下,可正常访问
4. 参考
- Spring Boot干货系列:(五)开发Web应用之JSP篇
- spring-boot-sample-web-jsp - 官方demo
- 项目源码 https://gitee.com/yysue/tutorials-java
Spring Boot整合模板引擎jsp的更多相关文章
- SpringBoot系列:Spring Boot使用模板引擎JSP
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- Spring Boot整合模板引擎freemarker
jsp本质是servlet,渲染都在服务器,freemarker模板引擎也是在服务器端渲染. 项目结构 引入依赖pom.xml <!-- 引入 freemarker 模板依赖 --> &l ...
- Spring Boot整合模板引擎thymeleaf
项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --> <dependency> <groupId>org.springframew ...
- spring boot: thymeleaf模板引擎使用
spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...
- spring boot: freemarket模板引擎
spring boot: freemarket模板引擎 freemarket模板引擎,可以和thymeleaf模板引擎共存 pom.xml引入 <!-- Freemarket --> &l ...
- SpringBoot系列:Spring Boot使用模板引擎FreeMarker
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- SpringBoot系列:Spring Boot使用模板引擎Thymeleaf
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- Spring Boot Thymeleaf 模板引擎的使用
Spring Boot 中可以支持很多模板引擎,Thymeleaf 是 Spring Boot 官方推荐使用的模板引擎,虽然在社区 Thymeleaf 的性能被许多人所吐糟,但这仍然不影响大量的开发人 ...
- Spring boot整合jsp
这几天在集中学习Spring boot+Shiro框架,因为之前view层用jsp比较多,所以想在spring boot中配置jsp,但是spring boot官方不推荐使用jsp,因为jsp相对于一 ...
随机推荐
- Brunch:入门上手
在 Phoenix 项目中遇到关于 Branch 这个 HTML5 构建工具的问题, 在这里为了剥离问题的复杂度, 独立创建一个 Branch 前端项目来探索如何使用 Brunch 这个全新的前端构建 ...
- 浅谈Nodejs应用的主文件index.js的组成部分
前言 Node妹子的问世,着实让我们前端攻城狮兴奋了一把,尤其本屌听说Javascript可以写服务端后,兴奋的像是看到了二次元萝莉的胖子...(●'◡'●).呃哼...YY先到这里,原谅本屌是个二次 ...
- 移动端调试工具weinre安装教程(java版)
先申明:本安装教程是基于java的jdk安装的,经过测试可以正常使用,基于nodejs的安装,小喵鼓弄了好几天也没有成功,如果哪位童鞋基于nodejs安装成功了,请联系小喵,小喵在这里先谢谢你了! 好 ...
- java中接口interface和private私有内部类怎样一块配合着用?
3.接口interface和private内部类协同工作[新手可忽略不影响继续学习]马克-to-win:由于是private内部类,外面无法访问甚至无法看到你编的源代码(如果在不同的包中),非常安全. ...
- 如何在jsp界面进行判断再输出不同的值
C标签的out <td> <c:if test="${nowtime eq returntime}"> <c:out value="逾期&q ...
- wx.getImageInfo和wx.downloadFile下载用户头像报错(小程序canvas以及小程序图片下载部分)
我先上图 之前我们后台配置的 downloadFile 合法域名是 https://wx.qlogo.cn, 用了好久都没出问题, 前段时间, 用户反馈 分享海报, 用户头像出不来!!!! ...
- 微信小程序加密解密参数
加密:encodeURIComponent(参数) 解密:decodeURIComponent(参数)
- Windows和ubuntu下更改pip国内镜像
windows下更改pip国内镜像 # 在C:\Users\admin路径下创建pip文件夹,然后创建pip.ini文件, 并在文件下写入 [global] index-url = http://py ...
- centos7 装机后的基本配置
安装完centos7.3后,做一些基本的操作 下面是我的环境的配置,你们可以根据自己的环境搭配相应的配置.修改下就可以了.基本操作一:主机名 centos7有一个新的修改主机名的命令hostnatct ...
- 函数.python
今日内容概要 名称空间 名字的查找顺序 作用域 global与nonlocal关键字 函数名对象 函数的嵌套 今日内容详细 1.名称空间 #名称空间其实就是存放变量名与变量名绑定关系的地方#分类1.内 ...