(已解决) Tomcat 各版本 配置SSI服务实现html模块化所出现的问题--超详细解决方案

明明tomcat配置了SSI 前后端也没报错,为啥就是出不来效果?

注: 本文适用于任何版本的tomcat!(绝非标题党!!!)


一.前戏

说来, 也是笔者最近一次偷懒引发的惨案: 由于笔者讨厌繁重冗长html代码,想着有没有类似jsp这样可以动态引入模块的功能, 这样就可以分而治之,这是个不错的idea(笔者一向爱装…), 很明显这个时候需要求救度娘, 百度一圈后发现HTML本身是不支持模块化的, 所要在服务端配置SSI去解析它

于是乎笔者就立刻搜索tomcat配置SSI服务, 搜了一大堆,无外乎有这样的共同操作(后面细说), 但是效果是: 前端不报错,后端也妥妥的 ,这就很难受了, 甚至想过放弃了. 但是!
(一波思考之后-----峰回路转,柳暗花明)


二.柳暗

我下面的前两条按照 网上的操作之后,发现一点问题都没有, 使用导入标签后啥也没有

<!--#include file="_head.html"-->
网上给的建议是
<servlet>
        <servlet-name>ssi</servlet-name>
        <servlet-class>
          org.apache.catalina.ssi.SSIServlet
        </servlet-class>
        <init-param>
          <param-name>buffered</param-name>
          <param-value>1</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
        </init-param>
        <init-param>
          <param-name>expires</param-name>
          <param-value>666</param-value>
        </init-param>
        <init-param>
          <param-name>isVirtualWebappRelative</param-name>
          <param-value>false</param-value>
        </init-param>
        <!--手动配置编码-->
        <init-param>
          <param-name>inputEncoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
  <init-param>
          <param-name>outputEncoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
        
        <load-on-startup>4</load-on-startup>
    </servlet>
  • 同时还要打开SSI<servlet-mapping>注释
      <servlet-mapping>
        <servlet-name>ssi</servlet-name>
        <url-pattern>*.shtml</url-pattern>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

到这是普通网上给出的, 结果是 tomcat6.0及以前的版本运行没有问题, 可惜笔者使用tomcat8.5却突然暴毙 还是出不来


三. 花明

于是乎 我想到是不是少配置了什么(我可真是个小机灵鬼) ,通过上面发现几乎核心配置都在web.xml中 ,我就想是不是这里面少了什么, 说起来就是干, ctrl+f搜索shtml发现了意外之喜

原来 tomcat 7以后追加了验证:不仅仅要取消上面的注释,还有这一块: 大概在3543行 打开注释:
在这里插入图片描述
重启tomcat 验证一下: 完美!

哦,对了 还有几个坑 给各位填一下:

  • 你们在页面引入模块的时候切记按照我这个格式:方框的前后不可以有空格

在这里插入图片描述

  • 引入时候有两种方式
<!--#include virtual="static/_header.html"-->
<!--#include file="_header.html"-->

第一种方式: 就是虚拟路径:相对于项目而言
第二种: 是和调用模块的页面在同一目录下


四. 收尾

有的时候,偷懒也是要付出一番代价的哈 累死了,搞了一个早上,睡了睡了…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值