首先,Spring MVC不进入Controller导致404的问题可能有多种原因,下面我将列举一些可能导致这个问题的原因和相应的解决方案。
原因一:未配置DispatcherServlet
当我们使用Spring MVC框架时,通过DispatcherServlet来处理所有的请求,如果没有配置DispatcherServlet,就会导致请求无法被正确路由到Controller中,从而导致404错误。要解决这个问题,需要在web.xml中进行配置:
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
这里的springMvc是自定义的servlet名字,可以任意修改,url-pattern是指在DispatcherServlet映射的url路径(所有请求都会被映射到该路径下)。
原因二:Controller中的@RequestMapping配置错误
如果Controller中的@RequestMapping配置错误,比如配置的路径不正确或者没有配置RequestMapping,都有可能导致请求无法正确路由到Controller中。解决这个问题需要确认@Controller和@RequestMapping注解均正确配置,示例代码如下:
@Controller
@RequestMapping("user")
public class UserController {
@RequestMapping("/info")
public String userInfo(){
return "userInfo";
}
}
这里的@RequestMapping("user")定义了Controller的路由前缀,访问该Controller下的请求需要加上"user"前缀;而@RequestMapping("/info")定义了映射到哪个方法。
原因三:Controller返回的视图名称错误
当Controller返回的视图名称不存在时,比如UserCotroller的userInfo()方法中返回"sss"视图的名称,但是实际上没有这个视图名称,这样返回视图时就会出现404错误。解决这个问题需要确认视图名称是否正确,可以在配置文件或者@Bean注解中配置视图解析器,示例代码如下:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.example"})
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry){
registry.addViewController("/login").setViewName("login");
}
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
在上述代码中,使用@Bean注解配置了视图解析器,将视图的前缀设置为"/WEB-INF/views/",后缀设置为".jsp"。
这些是可能导致Spring MVC不进入Controller导致404的一些原因,根据你的实际情况,选择相应的解决方案,就可以解决这个问题了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc不进入Controller导致404的问题 - Python技术站