无法解析MVC“xxx” 以及 “index”无法找到
- jar包依赖未引入
正确maven构建jar包如下
<!--Spring5 Thymeleaf整合-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.14.RELEASE</version>
</dependency>
- 配置文件配置错误,以及配置文件上下文路径设置错误
配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 使用thymeleaf解析 -->
<!-- <bean id="templateResolver"
class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/"/>
<property name="suffix" value=".html"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="order" value="1"/>
<property name="templateMode" value="HTML5"/>
<property name="cacheable" value="false"/>
</bean>
<bean id="springTemplateEngine"
class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
</bean>
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="springTemplateEngine"/>
<property name="characterEncoding" value="UTF-8"/>
</bean>-->
<!--设置静态资源解析使用DefaultServlet处理,否则使用SpringDispatcherServlet解析的是根目录,也就是没有对应RequestMapping无法访问!-->
<mvc:default-servlet-handler/>
<!--开启注解驱动,否则使用View-Controller(视图控制器)时Controller视图解析全部无法使用-->
<mvc:annotation-driven>
<mvc:message-converters>
<!-- 处理响应中文内容乱码 -->
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="defaultCharset" value="UTF-8" />
<property name="supportedMediaTypes">
<list>
<value>text/html</value>
<value>application/json</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--使用视图控制器 必须配置 <mvc:annotation-driven 否则会造成所有的@Controller注解无法解析,导致404错误-->
<mvc:view-controller path="/" view-name="index"/>
- 配置文件不生效,依旧报错视图MVC无法解析,可以使用配置类解决
package com.bookstore.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
/**
* @Author BaiYZ
* @Program BookStoreFrameWork
* @Description SpringMVC配置类
* @Date 2022-01-03 13:41:45
*/
@Configuration
@EnableWebMvc
@ComponentScan(value = "com.bookstore.controller", includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)})
public class SpringMVCConfig implements WebMvcConfigurer {
public final static String CHARACTER_ENCODING = "UTF-8";
// thymeleaf模板引擎参数
public final static String TEMPLATE_PREFIX = "/WEB-INF/templates/";
public final static String TEMPLATE_SUFFIX = ".html";
public final static Boolean TEMPLATE_CACHEABLE = false;
public final static String TEMPLATE_MODE = "HTML5";
public final static Integer TEMPLATE_ORDER = 1;
//模板解析器
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix(TEMPLATE_PREFIX);
templateResolver.setSuffix(TEMPLATE_SUFFIX);
templateResolver.setCacheable(TEMPLATE_CACHEABLE);
templateResolver.setCharacterEncoding(CHARACTER_ENCODING);
templateResolver.setTemplateMode(TEMPLATE_MODE);
templateResolver.setOrder(TEMPLATE_ORDER);
return templateResolver;
}
//模板引擎
@Bean
public SpringTemplateEngine springTemplateEngine(SpringResourceTemplateResolver templateResolver) {
SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
springTemplateEngine.setTemplateResolver(templateResolver);
return springTemplateEngine;
}
//视图解析器
@Bean
public ThymeleafViewResolver viewResolver(SpringTemplateEngine springTemplateEngine) {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(springTemplateEngine);
viewResolver.setCharacterEncoding(CHARACTER_ENCODING);
return viewResolver;
}
/* //使用默认的servlet处理静态资源 default-servlet-handler
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
//配置视图控制
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}*/
}