gpt4 book ai didi

java - 带 mvc 和自动配置的 Spring Boot

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:01 24 4
gpt4 key购买 nike

我已经尝试了解 Spring MVC 和启动一个多星期了。我理解其背后的理论,但不知何故我无法让它发挥作用。我知道白页错误问题已经被问了1000次了,但是他们都使用了web.xml来配置,我使用的是application.properties。

我创建了一个项目,首先,我的应用程序是我的 Controller ,我在其中使用请求映射和响应正文来呈现 JSP 页面,即使对不同的 JSP 页面进行多次调用,效果也很好。但是,当我尝试分离 Controller 并将它们放入 Controller 类中时,我收到白色标签页面错误?有人知道我做错了什么吗?

我严格按照教程进行操作,除了他的主应用程序位于默认包中,我的应用程序位于打包应用程序中,因为我收到一条错误,说我无法在基础包上执行组件功能,并且在最后一个和我卡住的视频之间的某个地方,他重写了 protected SpringApplicationBuilder 方法配置,但是当我尝试重写它时,我收到一条警告,指出它不是父类(super class)的方法。他也从未解释过该消息的作用。

这是我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>be.intecBrussel.danielDemesmaecker</groupId>
<artifactId>springMVC</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<java.version>1.8</java.version>
</properties>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.8.RELEASE</version>
</parent>

<build>
<finalName>SpringMVC</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>

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

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>required</scope>
</dependency>
</dependencies>
</project>

我的页面 Controller :

@Controller
public class PageController {

@RequestMapping("/")
String home(){
return "home";
}

@RequestMapping("/about")
String about(){
return "about";
}

@RequestMapping("/contact")
String contact(){
return "contact";
}
}

我的应用程序:

@EnableAutoConfiguration
@ComponentScan

public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}

当她仍在没有 Controller 类的情况下工作时,我的应用程序:

@EnableAutoConfiguration
@Controller

public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}

@RequestMapping("/")
String home(){
return "home";
}

@RequestMapping("/about")
String about(){
return "about";
}

@RequestMapping("/contact")
String contact(){
return "contact";
}
}

我知道社区对诸如为什么这不起作用之类的问题感到不满,但我只是不知道问题是什么,所以不知道有任何其他方式来提出问题。因此,任何人都可以帮助我理解为什么在将 Controller 移动到单独的类后会导致 View 链接损坏,那就太好了。仅供引用:我正在使用本教程:http://courses.caveofprogramming.com/courses/spring-boot-tutorial/lectures/1063634

对不起,我的英语不好,但我是荷兰人

最佳答案

您的 Controller 似乎未添加到 spring 配置中。我看到一个赤裸裸的注释

@ComponentScan

正如您在其 javadoc 中看到的:

If specific * packages are not defined, scanning will occur from the package of the * class that declares this annotation.

因此,您需要将 Controller 放在与您的 App 类相同的子包或 ab 子包中,而不是应该找到它。

向 Controller 类添加构造函数,在内部添加断点并以 Debug模式启动应用程序。如果没有停在断点处,则 Controller 不会被spring实例化......

你写道:

but they all use a web.xml to configure, I use the application.properties.

web.xml 用于配置 servlet 上下文。从 java servlet 版本 3 开始,这可以完全用 Java 完成。 Spring 会为您完成此操作,这就是您不再需要 web.xml 的原因。

application.properties用于配置spring和你自己的类。这与 web.xml 完全不同。

最后你可以看看这个基本的 spring 教程,它可能比你到目前为止尝试过的更容易理解......

希望能为您提供一点帮助。

关于java - 带 mvc 和自动配置的 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45894563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com