我使用Spring mvc
,Java class annotations
和.jsp
而非.html
做了一个非常简单的演示Web应用程序。
当我在本地主机上启动Tomcat时-我总是收到404错误。我在哪里犯错?
Config.class
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.mylov.springsecurity.demo.config")
public class Config {
//Define bean for ViewResolver
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
调度程序Servlet初始化
public class DispatcherServletInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{Config.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
控制器
@Controller
public class DemoController {
@GetMapping({"", "/"})
public String showHome() {
return "home";
}
}
项目结构:
答案 0 :(得分:1)
您需要扫描 demo 软件包下的软件包。因此,Spring将找到您的Controllers和Config类。但是现在您仅指向配置。因此不会扫描软件包“ controller”。
尝试执行以下操作:
@ComponentScan(basePackages = "com.mylov.springsecurity.demo")
答案 1 :(得分:0)
尝试提供如下所示的映射,以便所有url均与servlet映射:
public class DispatcherServletInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{Config.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/*"};
}
}
还要将基本软件包更改为以下内容,以便也可以拾取控制器类以进行组件扫描:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.mylov.springsecurity.demo")
public class Config {
..........
}