我正在尝试访问计算机上的http://localhost:8080/EventTracker/greeting。但是,我收到404错误。我正在关注PluralSight Spring MVC4入门教程,看来我的代码与视频中的代码匹配。我正在使用两个Java文件WebConfig和WebAppInitializer来配置我的应用程序。我有什么想念的吗?我想我已经逐行复制,但仍然无法正常工作。

HelloController.java

@Controller
public class HelloController {

    @RequestMapping(value="/greeting")
    public String sayHello(Model model) {
        model.addAttribute("greeting", "Hello World");

        return "hello.jsp";
    }
}


WebAppInitializer.java

public class WebAppInitializer implements WebApplicationInitializer{

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        WebApplicationContext context = getContext();
        servletContext.addListener(new ContextLoaderListener(context) );
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context) );
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("*.html");

    }

    private WebApplicationContext getContext() {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.setConfigLocation("com.pluralsight.WebConfig");
        return context;
    }
}


WebConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.pluralsight")
public class WebConfig {

}


hello.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>Insert title here</title>
</head>
<body>
    <h1>${greeting}</h1>
</body>
</html>


PST编辑于9/15 4:25 PM
使用http://localhost:8080/EventTracker/greeting.html时,仍然出现相同的错误,该错误是:

16:24:41.925 [http-nio-8080-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'DispatcherServlet' processing GET request for [/EventTracker/greeting.html]
16:24:41.931 [http-nio-8080-exec-3] WARN  o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/EventTracker/greeting.html] in DispatcherServlet with name 'DispatcherServlet'
16:24:41.931 [http-nio-8080-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request

最佳答案

因为这是我在Google中找到的第一个问题,在这里没有正确的答案,所以这对我有所帮助。

您应该在下一步中添加WebAppInitializer.java

context.register(com.pluralsight.WebConfig.class);


因此,您的文件应如下所示:

public class WebAppInitializer implements WebApplicationInitializer{

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        WebApplicationContext context = getContext();
        servletContext.addListener(new ContextLoaderListener(context) );
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context) );
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("*.html");

    }

    private WebApplicationContext getContext() {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.setConfigLocation("com.pluralsight.WebConfig");
        context.register(com.pluralsight.WebConfig.class);
        return context;
    }
}

10-07 19:42