在DispatcherServlet中找不到带有URI [/ proj /]的HTTP请求的映射,其名称为' dispatcher'

时间:2016-09-17 16:54:53

标签: java spring spring-mvc

我正在关注" Spring in action - Craig Walls"预订并遇到以下错误消息。关于web.xml,提到了很多问题。我使用的是Java配置而不是web.xml

spitter.web包中的控制器:

package spitter.web;

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";
    }
}

spittr.config包中的Dispatcher servlet配置:

package spittr.config;

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

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }

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

    @Override
    protected Class<?>[] getServletConfigClasses() {
        //return new Class<?>[] {WebConfig.Class};
        return null;
    }
}
同一个包中的

Rootconfig

package spittr.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={"spitter"}, excludeFilters={@Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class)})
public class RootConfig {

}

WebConfig

package spittr.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("spitter.web")
public class WebConfig extends WebMvcConfigurerAdapter{
    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WebContent/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

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

我正在使用Maven来解析依赖关系,并在eclipse中运行Tomcat 9来运行。

  

2016年9月17日下午4:46:48 org.apache.catalina.startup.Catalina start   信息:服务器启动时间为5007 ms 2016年9月17日下午4:46:49   org.springframework.web.servlet.PageNotFound noHandlerFound警告:   找不到带有URI [/ SpringMVC /]的HTTP请求的映射   具有名称&#39;调度程序&#39;

的DispatcherServlet

我的观看次数home.jsp位于WebContent/WEB-INF/views/home.jsp

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。我做了以下更改,现在正在运行。

我将web.config移动到与构造函数相同的包中。然后创建war文件并部署在Apache Tomcat中。现在我可以访问该网站了。