严重:由于先前的错误,Context [/ SpringMVCPractice1]启动失败

时间:2015-03-05 22:24:34

标签: spring-mvc java-ee tomcat7

我正在使用Java配置文件而不是XML配置文件来练习Spring MVC Web应用程序(Spring4)。 Tomcat服务器无法启动Web应用程序。在启动Tomcat时我在控制台中收到以下错误,但控制台上没有上一条消息

严重:由于之前的错误,上下文[/ SpringMVCPractice1]启动失败

我没有web.xml文件和dispatcher-servlet.xml,因为它是java文件配置

这里是来自控制台和整个源代码的整个日志

实践参考:Spring in Action,第4版:涵盖Spring 4

日志:

Mar 05, 2015 4:59:41 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_80\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\Program Files (x86)\Java\jre7\bin\javaw.exe;C:\apache-maven-3.2.3\bin;.
Mar 05, 2015 4:59:42 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SpringMVCPractice1' did not find a matching property.
Mar 05, 2015 4:59:42 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Mar 05, 2015 4:59:42 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Mar 05, 2015 4:59:42 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1234 ms
Mar 05, 2015 4:59:42 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Mar 05, 2015 4:59:42 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.37
Mar 05, 2015 4:59:46 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringMVCPractice1] startup failed due to previous errors
Mar 05, 2015 4:59:46 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Mar 05, 2015 4:59:46 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Mar 05, 2015 4:59:46 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4073 ms

WebConfig.java:

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("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

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



} 

SpittrWebAppInitializer.java:

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

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

RootConfig.java:

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 {
}

HomeController.java:

package spittr.web;

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

@Controller
public class HomeController {
    @RequestMapping(value = "/", method = GET)
    public String home() {
        return "home";
    }

}

在文件夹下...... \ WEB-INF \ views \ home.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page session="false" %> 
<html> 
  <head> 
    <title>Spittr</title> 
    <link rel="stylesheet" 
          type="text/css" 
          href="<c:url value="/resources/style.css" />" > 
  </head> 
  <body> 
    <h1>Welcome to Spittr</h1> 
    <a href="<c:url value="/spittles" />">Spittles</a> | 
    <a href="<c:url value="/spitter/register" />">Register</a> 
  </body> 
</html> 

0 个答案:

没有答案