2017-03-09 57 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