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.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种启动方式小结:
- 内嵌容器,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相对于一 ...
随机推荐
- C++类中隐藏的六个默认函数
Test类中隐藏的六个默认的函数 class Test { public: //默认的构造函数 Test(): //析构函数 ~Test(): //拷贝构造函数 Test(const Test &am ...
- c/c++中的i++和++i的区别
使用 i++ vs. ++i i++是先赋值再加1 ++i是先加1再赋值 到目前为止,你已经学习了如何编写下面这样的 C++ for 循环: for (int i = 0; i < 10; i+ ...
- 1_开环系统和闭环系统_反馈控制_Open/Closed Loop System_Feedback
- TTL 机制排毒,线上k8s的Job已经通过API 增加了Job的TTL 时长,且成功响应,为什么系统还是清理了Job?
TTL 机制排毒,线上k8s的Job已经通过API 增加了Job的TTL 时长,且成功响应,为什么系统还是清理了Job? 面试官:"已完成 Job 的 TTL 机制了解嘛?简单说说TTL存在 ...
- java中如何能知道应该捕获什么样的异常?举例
我怎么知道应该捕获什么样的异常? 马克-to-win:如上例1.1:开始没加try时,程序崩溃,系统打印的是如下的错误,Exception in thread "main" jav ...
- java中Object类是怎么回事,干嘛使的?举例说明!
Object类的作用:m a r k - t o- w i n: 在java中,因为所有的类都有共性,所以java的缔造者们把java设计成这样:所有的类都是Object类的直接或间接子 ...
- 修改Menu_item的字体属性
前面一直在找 MenuItem的文字颜色的设置.我发现API中只有背景颜色的设置... 所以找到下面的方法.在OverFlow上看到的.在onCreateOptionsMenu中覆写一下, 使Menu ...
- 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用
前段时间一个小伙伴去面试,遇到这样一个问题. "Fail-safe机制与Fail-fast机制分别有什么作用" 他说他听到这个问题的时候,脑子里满脸问号.那么今天我们来看一下,关于 ...
- Java学习day32
生产与消费者问题:假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者从仓库中取走产品:如果仓库中没有产品,生产者就将产品放入仓库,否则就停止生产等待:如果仓库中有产品,消费者就取走,否 ...
- 2021-01-25 cf #697 Div3 C题(超时,换思路减少复杂度)
题目链接:https://codeforces.com/contest/1475/problem/C 题意要求:需组成的2对,男的序号不能重,女的序号不能重 比如这例 输入: 行1--测试个数 行1` ...