spring boot同时兼容 jsp 和 thymeleaf
·
首先看一下目录结构,html和jsp存放的位置:

第二步,看一下,配置,分别转向jsp和html的配置
@Configuration
public class WebConfigure extends WebMvcConfigurationSupport {
@Resource
IndiaInterceptor indiaInterceptor;
/**
* 注册我们的拦截器
* @param registry
*/
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(indiaInterceptor)
//.addPathPatterns("/**")
//.excludePathPatterns(Arrays.asList("/resources/**", "/static/**","/public/**","/templates/**"))
;
super.addInterceptors(registry);
}
//jsp页面的视图解析器,解析到webapp下的jsp/目录下查找对应的jsp页面
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewNames("*");
resolver.setOrder(2);
return resolver;
}
@Bean
public ITemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setTemplateMode("HTML");
templateResolver.setPrefix("/WEB-INF/");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding("utf-8");
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
// templateEngine
return templateEngine;
}
/**
* 对thymeleaf的视图解析器,解析到webapp下的html目录下查找对应的页面
* @return
*/
@Bean
public ThymeleafViewResolver viewResolverThymeLeaf() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("utf-8");
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[]{"html/*", "vue/*","jsps/*","templates/*"});
return viewResolver;
}
/* @Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}*/
/**
* 用于直接访问静态资源
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/resources/",
"classpath:/static/", "classpath:/public/","classpath:/templates/","/WEB-INF/html/");
}
}
说明几点:
1. 重写 addResourceHandlers 这个方法,重新定义了静态资源的位置,能够直接访问resouces/static、resources/templates下的静态文件,如http://localhost:8080/indiabotprj/views/faq/faq_ar.html
2. extends WebMvcConfigurationSupport 的子类,似乎不能有多个, 我刚开始有一个注册拦截器的,后来又加了个处理视图的,发现拦截器不走了呢。
第三步看访问:
html的访问:
@RequestMapping("charmRules.do")
public String charmRules(HttpServletRequest request, HttpServletResponse response) {
logger.info("..........enter.........charmRules............");
return "html/charm/charm_rules_en";
}
jsp的访问:
@RequestMapping(value = "/findGifts.do", method = RequestMethod.GET)
public String findGifts(Model model){
List<Gift> giftList = giftService.findGifts();
model.addAttribute("giftList",giftList);
return "gift/gift_list";
}
更多推荐
所有评论(0)