springboot2.1 使用jsp作为页面

本次想在本地试试springboot2.1和jsp的整合,过程中遇到了很多问题,在此处记录一下。

我最后使用的是外部的tomcat来运行项目,不是使用的springboot自带的tomcat。

网上查的   spring-boot-sample-web-jsp 的例子中

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

有这个引入,但是我在本地测试将这个去掉后前台依然可以,原来是没有在jsp页面使用jstl标签,若想在页面使用jstl标签的话则,这个是需要引入的。

在application.properties中配置

spring.mvc.view.prefix=/WEB-INF/pages/  # 这个是在webapp目录下
spring.mvc.view.suffix=.jsp

Application类要继承   SpringBootServletInitializer 类,并  Override 其中的  

protected SpringApplicationBuilder configure(SpringApplicationBuilder application)

方法,方法内容也很简单:

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MainApplication.class);
    }

若没有继承 SpringBootServletInitializer 类则集成 jsp页面不成功,启动的时候会报  404 的错误,找不到jsp页面。

下面这两个引入是需要的:

        <!-- tomcat 的支持.-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
           <scope>provided</scope>
        </dependency>
        <!-- jsp 依赖 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

因为我使用的是外部自己的tomcat所以需要将 springboot中tomcat的 scope 设置为 provided,同样本地的tomcat中也提供了对 jsp的解析jar所以  tomcat-embed-jasper 也要设置为 provided。否则当启动的时候会报一些jar包重复的错误,或者jar包加载失败的错误,因为项目中和tomcat中都有这两个jar包,tomcat不知道要加载哪个,所以会报错。

其实我一开始是想用springboot自带的tomcat通过 MainApplication类来启动项目,但是弄了很长时间也没有弄好,将上面两个jar 的scope注释掉后,项目启动没有问题,但是当访问登录页面的时候会报错:

java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl

找不到这个类,但是在项目中是引入了这个类所在的 tomcat-embed-el-9.0.12.jar的jar包的,这个类也有,但是就是报这个错,将上面两个jar的scope改为 compile也不行。最后没有办法才改为使用外部tomcat。

其实中间还试过将页面的前后缀配置修改为在代码中使用 配置类来实现,但是仍然会报找不到这个类的错误,所以还是安安心心使用外部自己的tomcat了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值