将springmvc项目配置好,启动的时候,前台访问页面报404,后台出现一个警告:
后在网上查阅大量资料,并没有解决问题,困扰了我很长时间,后来重新创建一个项目并启动测试,访问成功,然后发现,原来是因为没有编译 class 导致,对比编译前后的out目录:
未编译:
编译后:
现将此问题可能出现的原因做一个整理,记录一下:
- 检查 web.xml 配置文件
检查 servlet-mapping 中的路径是否正确
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
此处的 url-pattern 应该是 /,不能是 /*,不然也是 404,两者区别
- 是否开启注解扫描
需要在 applicationContext.xml 中开启注解扫描,否则 spring 识别不了 @Control、@Service、@RequestMapping 等注解,访问也是404
<context:component-scan base-package="com.test.control"/>
- 在 applicationContext.xml 配置文件中添加:
<mvc:default-servlet-handler/>
此标签作用:
它会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />
- 是否开启注解驱动
<mvc:annotation-driven/>
此标签作用:
主要是注册了 RequestMappingHandlerMapping 和 RequestMappingHandlerAdapter bean,存储了请求url到Controller方法的映射关系
- 项目 class 是否进行了编译
- 项目访问路径是否正确
- 新增的 jar 包是否加入到了项目中
版权声明:本文为qq_42177284原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。