2017-03-09 58 views
0

我是Spring Web MVC的新手,我嘗試過試用Hello World應用程序。你好世界中的HTTP 404錯誤Spring MVC Web應用程序完全Java配置

我遵循了「Spring In Action 4th ed」一書中僅使用java配置(沒有任何XML文件)的例子。我使用Tomcat v7.0服務器和servlet 3.

問題是當我嘗試去主頁我得到Http 404錯誤。

所使用的Java類是:

DispatcherServlet的配置:

package config; 

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

public class FirstWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{ 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class<?>[] { RootConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class<?>[] { WebConfig.class }; 
    } 
} 

Spring MVC的配置:

package 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.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

@Configuration 
@EnableWebMvc 
@ComponentScan("web") 
public class WebConfig extends WebMvcConfigurerAdapter { 

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

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 
} 

配置用於獲取其他豆類(沒有做任何事情在hello world app)

package config; 

import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.ComponentScan.Filter; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.FilterType; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 

@Configuration 
@ComponentScan(basePackages={"lgmi_cr"},excludeFilters={@Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class)}) 
public class RootConfig { 

} 

首頁控制器

package web; 

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

@Controller 
public class HomeController { 

    @RequestMapping(value="/") 
    public String home() { 
     return "home"; 

    } 

} 

一個JSP文件中的 「家」 uneder/WEB-INF /視圖/

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <title>First app</title> 
    </head> 
    <body> 
     <h1>Hello world</h1> 
    </body> 
</html> 

由於404錯誤,我的第一印象是,它未能找到任何控制器,但我不知道爲什麼。

感謝您的幫助

+0

你有沒有檢查過你的Tomcat日誌?也許你的應用程序沒有正確部署。 – RubioRic

+0

@RubioRic將正確部署應用程序的semms,在Tomcat日誌中沒有錯誤 –

回答

0

我剛剛發現了這個問題。

實際上,我將外部Spring jar文件添加到項目classpath中,我忘記將它們添加到myProject/WebContent/WEB-INF/lib。

+1

我建議使用maven來維護依賴關係 – divine