Spring 引导:无法解析名称为 'index' 的 servlet 中具有名称'dispatcherServlet'的视图



我正在尝试使用spring-boot设置应用程序的主页。。但我收到错误,因为无法在名为"dispatcherServlet"的servlet中解析名为"index.html"的视图

我的代码如下

RunApplication.java

@SpringBootApplication
public class RunApplication {
static Logger logger = Logger.getLogger(RunNavneetApplication.class);
public static void main(String[] args) {
SpringApplication.run(RunNavneetApplication.class, args);
}
}

application.properties

spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.html

HomeController.java

@Controller 
public class HomeController {
@RequestMapping("/")
public String index() {
return "index";
}
}

WebConfig.java

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/productImages/**")
.addResourceLocations("file:/home/rahul/Desktop/product_images/")
.setCachePeriod(0);
}
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wocs</groupId>
<artifactId>REST</artifactId>
<version>0.0.1-SNAPSHOT</version>

<properties>
<java-version>1.8</java-version>
<service-version>0.1.36-SNAPSHOT</service-version>
</properties>  
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.wocs</groupId>
<artifactId>services</artifactId>
<version>${service-version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>

请帮我解决这个问题。。提前非常感谢。。。

在Spring Boot项目中删除@EnableWebMvc注释对我来说很有效。

对我来说(spring-boot-starter父版本2.0.5.RELEASE(,它以这种方式更改路径:

src/main/resources/

WEB-INF/view/index.htmlsrc/main/resources/META-INF/resources/view/index.html(由于某种原因,它似乎不喜欢WEB-INF名称,需要嵌套的resources目录(。

它似乎也适用于src/main/资源/资源/view/index.html

在这些情况下,您甚至不需要添加@EnableWebMvc注释并实现WebMvcConfigurer(在application.properties中配置前缀和后缀就足够了(。

在我的回答中,我还添加了一个关于MVC配置的澄清,该配置取自Spring Boot参考指南:

27.1.1 Spring MVC自动配置

如果您想保留Spring Boot MVC功能并添加额外的MVC配置[…],您可以添加自己的@Configuration类,类型为WebMvcConfigurer,但不包含@EnableWebMvc

如果您想完全控制SpringMVC,您可以添加自己的@Configuration,并用@EnableWebMvc进行注释。

76.7关闭默认MVC配置

完全控制MVC配置的最简单方法是为自己的@Configuration提供@EnableWebMvc注释。这样做会让所有MVC配置都掌握在您的手中。

我在春季启动应用程序中执行CURL请求时遇到了这个错误

{"时间戳":1566549840380,"状态":500,"错误":"内部服务器错误","message":"无法解析中名为"createApiKey"的视图名为"dispatcherServlet"、"path"的servlet:"/createApiKey"}

我通过从@Controller更改为@RestController(它是@Controller和@ResponseBody的组合(来修复它,如下所示:

@RestController
public class ApiKeyController {
...
@GetMapping("/createApiKey")
public DeferredResult<CreateApiKeyResp> createApiKey(@RequestParam long userId) {
...

在我的案例中,我缺少thymelaf依赖项。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

在代码中定义了后缀和前缀

spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.html

因此,您请求中的所有页面都将自动转换为html文件,因此您需要将return "index.html";更改为return "index";

更改为

@Controller 
public class HomeController {
@RequestMapping("/")
public String index() {
return "index";
}
}

spring引导应用程序获取jsp页面的循环视图路径更改

Changes required in application.properties
spring.thymeleaf.mode=HTML5
spring.thymeleaf.enabled=false
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
Changes in pom.xml
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

相关内容

最新更新