为什么80%的码农都做不了架构师?>>>   hot3.png

jsp也算是一种模板引擎吧。整合jsp前,先说一下运行SpringBoot项目的几种方式

1. 运行SpringBoot项目的几种方式

1.1 使用内嵌Tomcat运行项目

  1. 在IDE中右键运行启动类,也就是直接直接运行Appliction启动类中的main方法
  2. 使用mvn spring-boot:run
  3. 打成jar包,使用java -jar xxx.jar
  4. 打成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.jar jar包
  • 执行java -jar xxx.war war包
  • 外部容器 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)覆盖该方法@Overrideprotected 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种启动方式小结:

  1. 内嵌容器,intellij idea中执行启动类main方法

    1. 单模块项目时,可正常访问
    2. 多模块项目时,404,将jsp文件移到如下目录结构,也可正常访问 这个帖子子就描述了这个问题,给出的方案是部署到外部容器中
  2. 内嵌容器,java -jar xxx.jar
    1. 按如下目录配置执行,可正常访问
    2. 其他情况下执行,404
  3. 内嵌容器,java -jar xxx.war,可正常访问
  4. 内嵌容器,mvn spring-boot:run,可正常访问
  5. 外部容器,war包放到tomcat的webapps目录下,可正常访问

4. 参考

  • Spring Boot干货系列:(五)开发Web应用之JSP篇
  • spring-boot-sample-web-jsp - 官方demo
  • 项目源码 https://gitee.com/yysue/tutorials-java

转载于:https://my.oschina.net/yysue/blog/1831101

Spring Boot整合模板引擎jsp相关推荐

  1. 软件架构-Spring boot集成模板引擎swagger2实现

    上次说过springboot其实就是一个CI工具,如何体验出来CI的作用就是持续集成,它可以集成各种的工具,这里说说关于模板的集成引擎和Swagger. (一)Spring boot 集成模板引擎实现 ...

  2. Spring Boot 使用模板引擎

    Spring Boot 推荐使用Thymeleaf.FreeMarker.Velocity.Groovy.Mustache等模板引擎.不建议使用JSP. Spring Boot 对以上几种引擎提供了良 ...

  3. Spring Boot 9-FreeMarker模板引擎

    springboot使用freemarker模板引擎 首先引入freemarker <!-- freemarker依赖包 --> <dependency><groupId ...

  4. Spring Boot + Drools+模板引擎,优惠券的动态添加以及购物车结算

    目录 二.项目文件结构以及数据库表结构 三.主要项目文件说明 1.pom文件 2.配置文件 3.实体类 4.添加优惠券业务实现 5.购物车结算业务实现 四.实现效果 1.添加优惠券 2.购物车结算 五 ...

  5. Spring Boot 整合流程引擎 Flowable,so easy

    为啥想写 flowable 呢?原因很简单,因为最近在录的 tienchin 项目视频会用到,先写一篇文章和大家打打预防针,后面视频再细讲. 流程引擎,也算是一个比较常见的工具了,我们在日常的很多开发 ...

  6. Spring Boot 整合流程引擎 Flowable(附源码地址)

    一.导入依赖 flowable依赖: <dependency><groupId>org.flowable</groupId><artifactId>fl ...

  7. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板

    点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...

  8. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  9. freemarker ftl模板_Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

最新文章

  1. Mocha BSM应用管理——Lotus Domino监控与管理
  2. C++中struct和class关键字的区别
  3. MATLAB函数随笔之计算篇
  4. Python闭包与javascript闭包比较
  5. python * args和** kwargs的用法
  6. 由于Web服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面(http error 404.2、iis、0x800704ec)...
  7. 免费mp3音乐上传外链网站大全
  8. ucinet计算聚类系数大于1怎么办_ucinet软件解释对照
  9. 游戏框架(框架入门篇)
  10. 基于MATLAB的任意多边形最小外接圆计算
  11. 电脑小鸟壁纸怎么彻底删除?
  12. 2018.09.02【BZOJ2227】【ZJOI2011】看电影 (高精度)(组合数)
  13. std::set用法
  14. 第10章结构体01——结构体字节大小的计算
  15. 【阿里云IoT+YF3300】9.快速开发modbus设备驱动
  16. 支付宝企业付款PHP版本(转账到支付宝账户)
  17. JS中click事件
  18. svg中 path标签的d属性
  19. because an app is obscuring a permission request,无法开启USB调试
  20. 操作系统实验一:进程管理

热门文章

  1. 【小知识】为什么负数除二和右移一位的结果不一样?
  2. Git 2.7: 一个新的带来许多新特性和性能提升的主要版本
  3. 简说JAVA8引入函数式的问题
  4. 【LInux】查看Linux系统版本信息
  5. Java连接Oracle数据库示例
  6. Intellij IDEA自动部署项目至远程FTP服务器
  7. java中String对象和String变量
  8. Kosaraju 算法检测有向图的强连通性
  9. 重构代码(应如写诗)
  10. 为什么由Python转go