我正在關注「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
沒有映射。
確保所有彈簧依賴關係添加到類路徑... –
取消註釋在'SpittrWebAppInitializer'那些評論,並刪除它們下面的線。 –
而且我敢肯定,對'resolver.setPrefix( 「/的WebContent/WEB-INF /視圖/」);'而事實上,你的看法'home.jsp'是'的WebContent/WEB-INF /視圖/家.jsp'。 –