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)覆盖该方法
@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种启动方式小结:

  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整合模板引擎jsp的更多相关文章

  1. SpringBoot系列:Spring Boot使用模板引擎JSP

    一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...

  2. Spring Boot整合模板引擎freemarker

    jsp本质是servlet,渲染都在服务器,freemarker模板引擎也是在服务器端渲染. 项目结构 引入依赖pom.xml <!-- 引入 freemarker 模板依赖 --> &l ...

  3. Spring Boot整合模板引擎thymeleaf

    项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --> <dependency> <groupId>org.springframew ...

  4. spring boot: thymeleaf模板引擎使用

    spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...

  5. spring boot: freemarket模板引擎

    spring boot: freemarket模板引擎 freemarket模板引擎,可以和thymeleaf模板引擎共存 pom.xml引入 <!-- Freemarket --> &l ...

  6. SpringBoot系列:Spring Boot使用模板引擎FreeMarker

    一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...

  7. SpringBoot系列:Spring Boot使用模板引擎Thymeleaf

    一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...

  8. Spring Boot Thymeleaf 模板引擎的使用

    Spring Boot 中可以支持很多模板引擎,Thymeleaf 是 Spring Boot 官方推荐使用的模板引擎,虽然在社区 Thymeleaf 的性能被许多人所吐糟,但这仍然不影响大量的开发人 ...

  9. Spring boot整合jsp

    这几天在集中学习Spring boot+Shiro框架,因为之前view层用jsp比较多,所以想在spring boot中配置jsp,但是spring boot官方不推荐使用jsp,因为jsp相对于一 ...

随机推荐

  1. C++ | 虚表的写入时机

    虚表 在C++的多态机制中,使用了 virtual 关键字声明的函数称之为虚函数,每个有虚函数的类或者虚继承的子类,编译器都会为它生成一个虚拟函数表(简称:虚表,以下用 vftable表示),表中的每 ...

  2. 实现自定义的小程序底部tabbar

    背景 诶,当然是为了实现更有温度的代码啦(背后设计师拿着刀对着我) 自带tabbar app.json中配置: tabBar: { backgroundColor: '#fff', borderSty ...

  3. prometheus之查询语言

    PromQL(Prometheus Query Language)是 Prometheus 自己开发的表达式语言,语言表现力很丰富,内置函数也很多.使用它可以对时序数据进行筛选和聚合. 一.PromQ ...

  4. Anaconda安装tensorflow和keras(gpu版,超详细)

    本人配置:window10+GTX 1650+tensorflow-gpu 1.14+keras-gpu 2.2.5+python 3.6,亲测可行 一.Anaconda安装 直接到清华镜像网站下载( ...

  5. Paxos算法的一个简单小故事

    一.Paxos是什么? Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年提出,近几年被广泛应用于分布式计算中,Google的Chubby,Apache的Zooke ...

  6. 基于node实现一个简单的脚手架工具(node控制台交互项目)

    实现控制台输入输出 实现文件读写操作 全原生实现一个简单的脚手架工具 实现vue-cli2源码 一.实现控制台输入输出 关于控制台的输入输出依然是基于node进程管理对象process,在proces ...

  7. Blazor组件自做四 : 使用JS隔离封装signature_pad签名组件

    运行截图 演示地址 响应式演示 感谢szimek写的棒棒的signature_pad.js项目, 来源: https://github.com/szimek/signature_pad 正式开始 1. ...

  8. python if else代码优化

    开发过程遇到一个问题,用户的性别在数据库中存储时并不会用中文表示,数据库使用male.female.other代表男性.女性和其他,可接口传给前段时希望用户的性别是中文,这时就需要转换. 下面这段代码 ...

  9. Java报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sirifeng.babytun.dao.GoodsDAO.findById

    前言 最近学vue学得差不多了,想来搭个项目实战一下,结果刚开始搭建SSM框架的时候就来到了我们最喜欢的debug环节 org.apache.ibatis.binding.BindingExcepti ...

  10. python---if、while、for

    if语句 当出现选择情况的时候,就需要用到if语句. # 第一种语法 if 条件: # 冒号将条件和结果分开,不可缺少 结果1 结果2 # 条件为真执行结果1,然后结果2:否则直接结果2 # 第二种语 ...