首先看一下目录结构,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";
    }

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐