文档章节

Spring Boot整合模板引擎jsp

yysue
 yysue
发布于 2018/06/15 17:49
字数 942
阅读 189
收藏 3

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. 参考

© 著作权归作者所有

共有 人打赏支持
yysue
粉丝 28
博文 269
码字总数 155590
作品 0
济南
程序员
私信 提问
加载中

评论(5)

L
Laisgo
jsp早已过时
源哥L
源哥L

引用来自“源哥L”的评论

在eclipse里面 可以访问到jsp页面 打包 用 java -jar xxx.jar 运行的时候 找不页面
报这个错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Jul 05 11:41:22 CST 2018
There was an unexpected error (type=Not Fou

引用来自“yysue”的评论

用eclipse是怎么启动的呢?执行main方法还是部署到外部容器?

引用来自“源哥L”的评论

不是部署到外部容器 是通过jdk环境变量配置的java来运行的 java -jar xxx.jar

现在发现问题了 。 用这种方式运行的时候 要打成war 才行 jar不行! 例如: java -jar xxx.war 就可以
还是很谢谢你
源哥L
源哥L

引用来自“源哥L”的评论

在eclipse里面 可以访问到jsp页面 打包 用 java -jar xxx.jar 运行的时候 找不页面
报这个错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Jul 05 11:41:22 CST 2018
There was an unexpected error (type=Not Fou

引用来自“yysue”的评论

用eclipse是怎么启动的呢?执行main方法还是部署到外部容器?
不是部署到外部容器 是通过jdk环境变量配置的java来运行的 java -jar xxx.jar

现在发现问题了 。 用这种方式运行的时候 要打成war 才行 jar不行! 例如: java -jar xxx.war 就可以
yysue
yysue

引用来自“源哥L”的评论

在eclipse里面 可以访问到jsp页面 打包 用 java -jar xxx.jar 运行的时候 找不页面
报这个错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Jul 05 11:41:22 CST 2018
There was an unexpected error (type=Not Fou
用eclipse是怎么启动的呢?执行main方法还是部署到外部容器?
源哥L
源哥L
在eclipse里面 可以访问到jsp页面 打包 用 java -jar xxx.jar 运行的时候 找不页面
报这个错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Jul 05 11:41:22 CST 2018
There was an unexpected error (type=Not Fou
SpringBoot jsp详解

简单使用springboot创建工程 版本:1.5.8 开发工具:idea 2017.1.4 spring-boot 对模板引擎的支持有: FreeMarker Groovy Thymeleaf Mustache JSP 但是官方不建议实用jsp: JSPs should be a...

songhaiqiang
2017/10/23
0
0
SpringBoot | 第十六章:web应用开发

前言 前面讲了这么多章节,都没有涉及到前端web和后端交互的部分。因为作者所在公司是采用方式进行项目开发了。所以都是后端提供接口,前端根据或者服务自行调用的。后台也有读者说为何没有关...

oKong
2018/08/07
0
0
Spring Boot干货系列: (四)开发Web应用之Thymeleaf篇

        前言   Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持。   正文   Spring Boot提供了spring-boot-starter-web为Web开发予以支持,s...

后端编程嘟
2017/03/13
0
0
深入 Spring Boot :实现对 Fat Jar jsp 的支持

原文出处:Hengyunabc spring boot 对于jsp支持的限制 对于jsp的支持,Spring Boot官方只支持了war的打包方式,不支持fat jar。参考官方文档: https://docs.spring.io/spring-boot/docs/cu...

Hengyunabc
2018/06/04
0
0
Spring Boot入门资料整理

Spring Boot 初识 SpringBoot前世今生 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望。 Spring Boot参考指南中文版--Chapter1.Spring Boot中文文档 本节提供...

小致dad
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS数组去重的几种常见方法

一、简单的去重方法 // 最简单数组去重法/** 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中* IE8以下不支持数组的indexOf方法* */function uniq(array){ var ...

Jack088
22分钟前
1
0
kafka 集群监控 (kafka Manager)

一、监控kafka工具有很多,但是对于运维人员来说kafka Manager 就可以了 二、下载kafkaManager 编译安装 地址https://github.com/yahoo/kafka-manager 三、下下来的是源码 需要在开始安装官方...

雁南飞丶
23分钟前
1
0
php开发环境搭建

一、wamp环境搭建 安装apache 安装mysql 解压php 在httpd.conf中配置apache,让apache支持php #加载php作为apache的一个模块 LoadModule php5_module "d:/server/php/php5apache2_4.dll" 5. ......

lujc
26分钟前
0
0
java+testng接口测试

最近写了三个接口,很不想写了,觉得好麻烦呀,用postman比这个简洁多了,为什么要写代码呀,为都要学习代码呀呀,我现在还没觉得手写代码比用工具工作上优势体现在哪里了~~知道的告诉我下...

EvanDev
34分钟前
1
0
反向代理(内网穿透)工具Ngrok安装

ngrok是一个反向代理工具,1.x版本源码开源;可以自己搭建一个服务来使用,将本地的web或tcp服务通过公共端口和外部建立一个安全通道,这样就可以通过外网直接访问本地对应的服务,在进行微信...

zerokb-小浪
42分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部