Servlet学习——Servlet3.0的注解无法生效解决方案

版权声明:本文为博主原创文章,转载时需要带上原文链接。 https://blog.csdn.net/a158123/article/details/77924334

这个问题是由于Servlet3.0之后的web.xml的文件头配置已经和之前的版本不一样了,以下为Eclipse创建的Dynamic Web Project的web.xml文件,Servlet为2.5:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  ...
</web-app>

Servlet版本为3.0的时候:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  ...
</web-app>

使用Maven构建的Web项目的web.xml文件(使用的archetype为maven-archetype-webapp,版本为1.0)如下:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    ...
</web-app>

从以上的比较可以看出,是因为文件头不同才会导致这个问题,只需要修改文件头与Servlet3.0的一致即可解决这个问题。

使用Jetty时要注意使用的Jetty版本是否支持Servlet3.0,建议使用Jetty8.X或以上的版本。

没有更多推荐了,返回首页