1.首先考虑路径是否正确
2.其次考虑web.xml配置的前端控制器的dispatcher的拦截路径配置是否与资源路径一致,下面放上错误案例
前端控制器
<!-- 前端控制器(加载classpath:springmvc.xml 服务器启动创建servlet) -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始化参数,创建完DispatcherServlet对象,加载springmvc.xml配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!-- 服务器启动的时候,让DispatcherServlet对象创建 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
可以看到 web.xml 拦截路径配置为 *.do
@RequestMapping("/findAll")
public ModelAndView findAll(){
ModelAndView modelAndView = new ModelAndView();
List<Product> ps = service.findAll();
modelAndView.addObject("productList",ps);
modelAndView.setViewName("product-list");
return modelAndView;
}
而controller层中没有 *.do 后缀, 所以这样去访问也会报错404.