系统学习JavaWeb之特别篇使用注解WebServlet配置Servlet报404错误的原因

    有些人可能会遇到这种种情况,在采用注解WebServlet配置Servlet的时候,明明在配置了urlPatterns属性,部署应用程序的时候也没有出错。但是就是在浏览器发请求的时候访问不到资源,报404错误request resource is not available。捣腾了半天也不知道,到底是哪而出错了?


    Servlet3.0之后新增了注解,用于简化Servlet、Filter及Listener的声明,这样就在配置Servlet的时候多了一个选择。Servlet3.0的部署描述文件web.xml的顶层标签有一个metadata-complete属性,该属性为true,则容器在部署时只依赖部署描述文件,忽略所有标注,如果不配置该属性,或者将其设置为false,则表示启动标注支持。当metadata-complete="false"时,web.xml和注解对于Servlet的影响同时起作用,两种方法定义的url-partten都可以访问到该Servlet,但是当通过web.xml定义的url-partten访问时,注解定义的属性(初始化参数等)将失效。

    但是,我们要知道JDK是在5.0之后才支持注解特性的,所以要想使用Servlet3.0的这个新特性必须JDK5.0以后的版本。而Tomcat容器是在7.0以后才开始支持此特性。所以通常使用WebServlet注解报404错误的原因可以总结如下:

    使用的是JDK5.0以前的版本;

    使用的是Tomcat7.0更早的版本;

    使用了web.xml文件但是web-app标签的version属性不为3.0,导致容器没有按照Servlet 3.0版本正确配置;

你可能感兴趣的:(JavaWeb,系统学习JavaWeb)