2017-06-12 204 views
0

我想要做一个例子,将xml配置更改为Java MVC的配置。但我的简单例子不起作用。在服务器上运行此项目时,在控制台上看不到任何bean初始化或调度程序servlet名称。 和我上运行的http://localhost:8080/Servlet3Example/春天MVC Java配置问题

我创建了一个Maven项目和下面的404错误是我的代码:

package com.project.config; 
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

public class MyDispatcherServlet extends  AbstractAnnotationConfigDispatcherServletInitializer { 

@Override 
protected Class<?>[] getRootConfigClasses() { 
    System.out.println("get root config"); 
    //return new Class[]{RootConfig.class}; 
    return null; 
} 

@Override 
protected Class<?>[] getServletConfigClasses() { 
    System.out.println("get web config"); 
    return new Class[]{WebConfig.class}; 
} 

@Override 
protected String[] getServletMappings() { 
    System.out.println("in dispatcher servlet"); 
    return new String[] {"/"}; 
} 

}

而且WebConfig是:

package com.project.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(basePackages={"com.project.controllers"}) 
public class WebConfig extends WebMvcConfigurerAdapter { 

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

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

}

And controller:

package com.project.controllers; 

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

@Controller 
public class HomeController { 

@RequestMapping(value="/",method=RequestMethod.GET) 
public String home() 
{ 
    return "home"; 
} 
} 
+0

这一切似乎看起来没什么问题。你的服务器日志中是否有错误?还可以尝试在MyDispatcherServlet和MyConfig中添加一些断点,以查看这些断点是否已初始化。 – Plog

+0

尝试'http:// localhost:8080 /' – jmw5598

+0

不,MyDispatcherServlet似乎没有初始化。配置也是,控制台中没有bean的引用。在控制台中没有错误。 – Megha

回答

0

能否请您更改@ComponentScan@ComponentScan(basePackages={"com.project.*"})