一个用jsp写的旧项目,然后新增了模块,前端使用h5写的,需要嵌入到APP中,给我的是html文件,麻烦来了,项目原来的是jsp页面,现在app要我给他们一个接口,进入写好的HTML中,以下是网上搜索实现的方案:
先添加两个配置类:
判断文件是否存在
public class HandleResourceViewExists extends InternalResourceView {
@Override
public boolean checkResource(Locale locale) {
File file = new File(this.getServletContext().getRealPath("/") + getUrl());
return file.exists();
}
}
package com.wowoohi.common.interceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* Created by ljp on 2020/6/30 16:00
*/
@Configuration
public class ViewResolverConfiguration {
@Bean
public InternalResourceViewResolver htmlViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/");
viewResolver.setViewClass(HandleResourceViewExists.class); //设置检查器
viewResolver.setSuffix(".html");
viewResolver.setOrder(0);
viewResolver.setContentType("text/html;charset=UTF-8");
return viewResolver;
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(HandleResourceViewExists.class); //设置检查器
viewResolver.setPrefix("/");
viewResolver.setSuffix(".jsp");
viewResolver.setOrder(0);
viewResolver.setContentType("text/html;charset=UTF-8");
return viewResolver;
}
}
pom文件中加入jsp和thymeleaf的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- jsp标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
application中配置thymeleaf:
# 定位模板的目录
spring.mvc.view.prefix=/
# 给返回的页面添加后缀名
spring.mvc.view.suffix=.html
html文件只有一个,在h5文件夹下,其他所有页面均为jsp,通过测试,html和jsp页面均能访问。临时用到记录一下,并没有太详细的去理解其中的原理。
后来出现了一些问题,将代码重新回退,正常访问jsp页面,然后将html页面直接放到static目录下,直接给到安卓端区访问。