关于spring boot项目使用jsp作为视图层页面的maven配置

spring boot不建议使用jsp作为视图层技术,如果使用的话需要进行相关配置,这里主要说一下关于maven中的配置

以下结论本人亲自测试 已验证

首先要知道spring boot内置的tomcat是无法解析jsp文件的,所以如果使用内置tomcat运行项目且项目中包含jsp页面,则需要引其他依赖:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<!--必引的依赖  配合这个依赖,内置tomcat才能解析jsp页面-->

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<!-- 可选 如果jsp文件中引入了jstl标签 则需要引入该jar包-->
<!-- 其他的类似,jsp页面用到了则引入,否则可以不用-->

如果使用了外置的tomcat运行spring boot项目(此时项目被打成war包),且项目中包含jsp页面,则需要从spring-boot-starter-web中排除内置的tomcat :

<exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>

因为内置tomcat的scope是compile,会被打进war包从而和外置tomcat产生冲突

由于外置的tomcat啥都有(粗略理解为内置tomcat + tomcat-embed-jasper = 外置tomcat),可以直接解析jsp页面,所以在排除spring-boot-starter-tomcat以来之后,不用再引入tomcat-embed-jasper依赖了。

此时通常有两种选择:

  • 第一种:上面说的 排除内置tomcat 之后直接在外置tomcat上跑项目就行了
  • 第二种:这种情况遇到的更多,通常由于项目需要做测试,所以排除内置tomcat后希望再引入一个scope为provided的tomcat依赖,相应的也要引入provided的tomcat-embed-jasper依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

显然这两个依赖即使被注释掉也不会影响最终项目在外置tomcat中的运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值