2016-09-17 80 views
0

我正在關注「Spring in action - Craig Walls」一書,並且遇到了以下錯誤消息。與web.xml有關的問題很多。我使用Java配置而不是web.xml在名爲'dispatcher'的DispatcherServlet中使用URI [/ proj /]發現HTTP請求沒有映射

控制器在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"; 
    } 
} 

分派器servlet配置在spittr.config包:

在同一封裝
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日下午四點46分48秒開始org.apache.catalina.startup.Catalina INFO :在5007毫秒Server啓動2016年9月17日下午4點46分49秒 org.springframework.web .servlet.PageNotFound noHandlerFound警告: 在 的DispatcherServlet找到HTTP請求與URI [/用SpringMVC /]名爲 '調度'

我的觀點home.jsp是在WebContent/WEB-INF/views/home.jsp沒有映射。

+0

確保所有彈簧依賴關係添加到類路徑... –

+0

取消註釋在'SpittrWebAppInitializer'那些評論,並刪除它們下面的線。 –

+0

而且我敢肯定,對'resolver.setPrefix( 「/的WebContent/WEB-INF /視圖/」);'而事實上,你的看法'home.jsp'是'的WebContent/WEB-INF /視圖/家.jsp'。 –

回答

0

感謝您的幫助。我做了以下更改,現在正在工作。

我將web.config移動到與我的構造函數相同的包中。然後創建war文件並部署在Apache Tomcat中。現在我可以訪問該網站。

相關問題