2014-11-07 20 views
23

Qui ho un'applicazione MVC Spring-Boot estremamente semplice che non funziona. Un controller con una pagina che non sta caricando e che riceve un 404 non trovato.Modello MVC Spring-Boot non caricato (404 non trovato)

Inserisco un'istruzione System.out.println ("Pagina iniziale") nel metodo controller e convalidato che è stata mappata e che è stata attivata correttamente ma il modello non si sta caricando.

L'errore:

Whitelabel Error Page 

This application has no explicit mapping for /error, so you are seeing this as a fallback. 

Thu Nov 06 23:43:51 EST 2014 
There was an unexpected error (type=Not Found, status=404). 

La struttura delle cartelle:

src/main/java 
+-Application.java 
+-WebController.java 

src/main/resources 
+-templates 
    +-index.html 

output della console abbreviato:

Server initialized with port: 8080 
Starting service Tomcat 
Starting Servlet Engine: Apache Tomcat/7.0.55 
Initializing Spring embedded WebApplicationContext 
Root WebApplicationContext: initialization completed in 1947 ms 
Mapping servlet: 'dispatcherServlet' to [/] 
Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 
Mapped "{[/],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String app.WebController.index() 
Tomcat started on port(s): 8080/http 
Started Application in 5.552 seconds (JVM running for 6.366) 
Home Page 
Home Page 
Home Page 

Configurazione:

@EnableAutoConfiguration 
@Configuration 
@ComponentScan 
public class Application extends WebMvcConfigurerAdapter { 
    public static void main(String[] args) { 
     ConfigurableApplicationContext context = SpringApplication.run(Application.class); 
    } 
} 

Controller:

@Controller 
public class WebController { 
    @RequestMapping(value="/") 
    public String index(){ 
     System.out.println("Home Page"); 
     return "index"; 
    } 
} 

index.html:

<!DOCTYPE html> 
<html lang="en"> 
<body> 
<h1>Hello</h1>  
</body> 
</html> 

Ho un estremamente semplice applicazione Primavera-Boot MVC qui che non funziona. Un controller con una pagina che non sta caricando e che riceve un 404 non trovato.

Inserisco un'istruzione System.out.println ("Pagina iniziale") nel metodo controller e convalidato che è stata mappata e che è stata attivata correttamente ma il modello non si sta caricando.

L'errore:

Whitelabel Error Page 

This application has no explicit mapping for /error, so you are seeing this as a fallback. 

Thu Nov 06 23:43:51 EST 2014 
There was an unexpected error (type=Not Found, status=404). 

La struttura delle cartelle:

src/main/java 
+-Application.java 
+-WebController.java 

src/main/resources 
+-templates 
    +-index.html 

output della console abbreviato:

Server initialized with port: 8080 
Starting service Tomcat 
Starting Servlet Engine: Apache Tomcat/7.0.55 
Initializing Spring embedded WebApplicationContext 
Root WebApplicationContext: initialization completed in 1947 ms 
Mapping servlet: 'dispatcherServlet' to [/] 
Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 
Mapped "{[/],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String app.WebController.index() 
Tomcat started on port(s): 8080/http 
Started Application in 5.552 seconds (JVM running for 6.366) 
Home Page 
Home Page 
Home Page 

Configurazione:

@EnableAutoConfiguration 
@Configuration 
@ComponentScan 
public class Application extends WebMvcConfigurerAdapter { 
    public static void main(String[] args) { 
     ConfigurableApplicationContext context = SpringApplication.run(Application.class); 
    } 
} 

Controller:

@Controller 
public class WebController { 
    @RequestMapping(value="/") 
    public String index(){ 
     System.out.println("Home Page"); 
     return "index"; 
    } 
} 

index.html:

<!DOCTYPE html> 
<html lang="en"> 
<body> 
<h1>Hello</h1>  
</body> 
</html> 

POM:

<?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>com.App</groupId> 
    <artifactId>App</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <name>App</name> 
    <description>App</description> 

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

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
      <version>1.4.181</version> 
     </dependency> 
     <!--dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-redis</artifactId> 
     </dependency--> 
     <dependency> 
      <groupId>com.firebase</groupId> 
      <artifactId>firebase-client</artifactId> 
      <version>1.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>2.10.4</version> 
     </dependency> 
    </dependencies> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <start-class>App.Application</start-class> 
     <java.version>1.7</java.version> 
    </properties> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <name>Spring Releases</name> 
      <url>http://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <name>Spring Releases</name> 
      <url>http://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 
+0

mostrare il proprio CIO Container voglio dire il file xml. – Krishna

+0

mostra il tuo web.xml e dispatcher-servlet.xml – Madhesh

+2

È un'applicazione Spring Boot, quindi non mi aspetto alcun xml (specialmente non web.xml). –

risposta

36

Sembra che non si dispone di Thymeleaf sul percorso della classe.

Aggiungi questa dipendenza:

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

e tutto dovrebbe funzionare allora.

Se siete ancora affrontare alcuni problemi si raccomanda di creare nuovo progetto con http://start.spring.io/

+3

Era questo! Non avrebbe dovuto generare un errore se non riusciva a trovare "indice" per darmi qualche indicazione? Comunque grazie! – szxnyc

+1

Si è verificato un errore (404 non trovato). –

+2

Ho avuto lo stesso problema. Dovrebbe avere il log almeno –

2

seguire questa link.Nice esempio dato http://spring.io/guides/gs/handling-form-submission/

src/main/java/ciao/GreetingController.java

package hello; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.PostMapping; 
@Controller 
public class GreetingController { 
    @GetMapping("/greeting") 
    public String greetingForm(Model model) { 
     model.addAttribute("greeting", new Greeting()); 
     return "greeting"; 
    } 
    @PostMapping("/greeting") 
    public String greetingSubmit(@ModelAttribute Greeting greeting) { 
     return "result"; 
    } 
} 

src/main/risorse/templates/greeting.html

<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Getting Started: Handling Form Submission</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <h1>Form</h1> 
    <form action="#" th:action="@{/greeting}" th:object="${greeting}" method="post"> 
     <p>Id: <input type="text" th:field="*{id}" /></p> 
     <p>Message: <input type="text" th:field="*{content}" /></p> 
     <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p> 
    </form> 
</body> 
</html> 

src/main/risorse/templates/result.html

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Getting Started: Handling Form Submission</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <h1>Result</h1> 
    <p th:text="'id: ' + ${greeting.id}" /> 
    <p th:text="'content: ' + ${greeting.content}" /> 
    <a href="/greeting">Submit another message</a> 
</body> 
</html> 

src/main/java/ciao/Application.java

package hello; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

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

} 
1

tenta di creare un progetto di avvio di primavera da questo sito http://start.spring.io/, che è un inizializzatore a molla utilizzato per creare un progetto maven con avvio a molla. Aggiungi dipendenze web e thymeleaf e genera un progetto. Importa il progetto nel tuo IDE come progetto maven o usa la suite di strumenti Spring.

DemoApplication.java:

@Controller 
@SpringBootApplication 
public class DemoApplication { 
    public static void main(String[] args) { 
    SpringApplication.run(DemoApplication.class, args); 
    } 
    @RequestMapping(value = "/homepage" , method = RequestMethod.GET ) 
    public String sample() 
    { 
    return "home"; 
    } 
} 

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>com.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>demo</name> 
    <description>Demo project for Spring Boot</description> 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.2.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.7</java.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

home.html:

<!DOCTYPE html> 

<html> 
<head> 
    <meta charset="UTF-8"></meta> 
    <title>HomePage</title> 
</head> 
<body> 
    <h1>MY Spring Boot Home Page</h1> 
</body> 
</html> 
Problemi correlati