eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

时间:2022-01-15 06:54:06

在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会弹出一个对话框,“Dynamic web module version”这个选项默认成了3.0,按照老规范,应该是在eclipse的WebContent \ WEB-INF \ 目录下创建web.xml的。而新规范是可以不用web.xml的,如tomcat 7.0就支持新规范,这样相关的servlet配置会以注解的形式直接写到代码里面了,比如@WebServlet。 当然如果你用老的项目导入,可以选择Dynamic web module version这个选项设成2.5,这样web.xml就会自动更新了。

@WebServlet(“/HW”)的含义:

@WebServlet(“/HW”)//默认设置的是urlPatterns属性

public class HelloServlet extends HttpServlet {

只要在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息。上面的@WebServlet告诉容器,如果请求的URL是“/HW”,则由HelloServlet的实例提供服务。可以使用@WebServlet提供更多信息。
@WebServlet(
    name="Hello",
    urlPatterns={"/HW"}
)

上面的@WebServlet告知容器,HelloServlet这个Servlet的名称是Hello,这是由name属性指定的,而如果客户端请求的URL是/HW,则由具Hello名称的Servlet来处理,这是由urlPatterns属性来指定的。在Java EE相关应用程序中使用标注时,可以记得的是,没有设置的属性通常会有默认值。例如,若没有设置@WebServlet的name属性,默认值会是Servlet的类完整名称。

注意:Tomcat中, 如果web.xml和@WebServlet属性都设置了,那么对不起,@WebServlet

中的urlPatterns属性就不起作用了!(可以将web.xml从WEB-INF目录中移走,或者删除

这样@WebServlet中的urlPatterns属性值就可以使用了!)