2015-12-13 162 views
0

我跟着this tutorial做了一個簡單的MVC項目,並添加了一個控制器和視圖。但現在,無論鏈接了以下我用的,我總是在Chrome得到這個錯誤:spring MVC HTTP狀態404

HTTP Status 404 - /spring-MVC 

type Status report 

message /spring-MVC 

description The requested resource is not available. 

Apache Tomcat/8.0.30 

的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>spring-MVC</display-name> 
    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>SpringDispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value> 
       org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
      </param-value> 
     </init-param> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>spring_maven.spring_MVC</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SpringDispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
</web-app> 

MvcConfiguration.java:

package spring_maven.spring_MVC.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

@Configuration 
@ComponentScan(basePackages="spring_maven.spring_MVC") 
@EnableWebMvc 
public class MvcConfiguration extends WebMvcConfigurerAdapter{ 

    @Bean 
    public ViewResolver getViewResolver(){ 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     return resolver; 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 


} 

HomeController的。 java:

package spring_maven.spring_MVC.controller; 

import java.io.IOException; 

import javax.servlet.http.HttpServletResponse; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class HomeController { 


    @RequestMapping(value="/") 
    public ModelAndView ejub(HttpServletResponse response) throws IOException{ 
     return new ModelAndView("home.jsp"); 
    } 
} 

地方Controller.java:

package spring_maven.spring_MVC.controller; 


import java.io.IOException; 

import javax.servlet.http.HttpServletResponse; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class PlacesController { 

    @RequestMapping(value="/getAllPlaces") 
    public ModelAndView getAllPlaces() throws IOException{ 
     return new ModelAndView("getAllPlaces.jsp"); 
    } 
} 

回到Home.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Home</title> 
    </head> 
    <body> 
     <h1>Hello World!</h1> 
     <p>This is the homepage!</p> 
    </body> 
</html> 

getAllPlaces.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>getAllPlaces</title> 
</head> 
<body> 
eeeee 
</body> 
</html> 

和文件的Eclipse中的結構:

enter image description here

所以據我所見,這些鏈接應該工作,但它們產生的錯誤提到:

http://localhost:8080/spring-MVC http://localhost:8080/spring-MVC/getAllPlaces http://localhost:8080/spring-MVC/home

我做了什麼錯?

回答

1

你的控制器返回回到Home.jsp爲/所以回家網址看起來應該像http://localhost:8080/spring-MVC/

帶/不/家

結束我猜你不需要使用.JSP在控制器return語句:

return new ModelAndView("home"); 

查看解析器將完成剩下的

+0

仍然會發生同樣的錯誤。 – xpg94

+0

服務器日誌中的任何錯誤? – john

+0

下面是一個非常好的解釋如何春季mvc應用程序的工作原理,也許它可以幫助你http://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm – john

0

由於兩件事發生錯誤: 1.我忘了將項目拖放到正在運行的Tomcat服務器中。 2.我忘了重啓服務器。

當我做了這兩件事,突然它開始工作.. :)