记一次springboot整合jsp及swagger的坑

背景:

老的项目是用springboot+jsp做的,现在需要对老的项目进行重构,集成swagger

项目技术栈:

springboot,jsp,swagger

问题

在集成springswagger的时候,请求是正常的,但是页面一片空白,什么都没有,通过检查,我发现返回的swagger-ui.html文件是不全的,与原本的文件对比,里面多了一些标签

页面无法显示

问题就出在这上面,我通过全局搜索,定位到了这些加上去的内容是项目中某个defaul.jsp文件中的内容,不知道怎么被加到swagger-ui.html里面去了,从而导致文件被破坏,页面无法正常显示。

根因

项目里注册了一个SiteMeshFilter过滤器,匹配路径是根路径registrationBean.addUrlPatterns(“/*”),导致swagger的页面也被拦截了。
于是SiteMeshFilter也会把swagger的页面按照它的逻辑重新解析,就导致了原页面被破坏。

@Bean
    public FilterRegistrationBean siteMeshFilterRegistration() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(siteMeshFilter());
        registrationBean.setName("sitemesh");
        registrationBean.addUrlPatterns("/*");
        registrationBean.setOrder(1);
        return registrationBean;
    }

siteMeshFilter是opensymphony包里面的一个过滤器
至于opensymphony是什么可以参考这篇文章

https://blog.csdn.net/ccecwg/article/details/24125571

解决办法

将拦截器的匹配路径缩小到只拦截jsp的内容,解决。。。

@Bean
    public FilterRegistrationBean siteMeshFilterRegistration() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(siteMeshFilter());
        registrationBean.setName("sitemesh");
        registrationBean.addUrlPatterns("/WEB-INF/*");
        registrationBean.setOrder(1);
        return registrationBean;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值