使用WebServlet注解和web.xml配置servlet映射路径的区别及注意事项

Posted 一切因为是码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用WebServlet注解和web.xml配置servlet映射路径的区别及注意事项相关的知识,希望对你有一定的参考价值。


一、使用web.xml配置url

格式:

  <servlet>
         <!--自定义,一般为类名-->
         <servlet-name>servletDemo1</servlet-name>
         <!--一定是package + .类名-->
         <servlet-class>day08_servlet.ServletDemo1</servlet-class>
  </servlet>
  
     <!--给Servlet提供(映射)一个可供客户端访问的URI-->
  <servlet-mapping>
         <!--和servlet中的name必须相同-->
         <servlet-name>servletDemo1</servlet-name>
         <!-- servlet的映射路径 -->
         <url-pattern>/servlet</url-pattern>
  </servlet-mapping>         

注意:

  1. url-pattern其中的路径不要忘记‘/’
  2. servlet-class的格式一定是包名+类名

二、使用servlet注解设置url

在tomcat7.0,servlet3.0以上,支持注解的方式来设置servlet映射路径而不再需要配置web.xml。

@WebServlet注解允许servlet映射声明在servlet代码,作用同通过映射部署描述符(web.xml)文件的servlet.

我们在创建新的项目时选择tomcat8.5,servlet3.1
在这里插入图片描述
之后新建一个servlet时就会自动生成一条注解:@WebServlet("/MyServlet")
在这里插入图片描述
此时自动生成的web.xml文件内容 (其中没有<servlet.>字样)
在这里插入图片描述


@WebServlet格式:

  1. @WebServlet注解提供的value属性,该属性提供servlet映射
@WebServlet("/MyServlet")

在双引号中的/MyServlet即为当前servlet配置的url,其作用等同于web.xml文件中的url-pattern部分

  1. 当然也可以给servlet提供几个不同的路径的映射,需要使用到urlPatterns属性,urlPatterns属性可以指定一个URL模式字符串数组映射servlet。如下:
@WebServlet(urlPatterns={"/MyServlet","/Test","/hello"})

此时当前servlet可以通过三个不同的url访问


三、有关使用web.xml重写WebServlet注解

当在java代码使用@WebServlet映射servlet时,部署描述符文件(web.xml)也可以一起使用来映射servlet。事实上有许多要求在应用程序中使用web.xml

如果你代码中仍使用@WebServlet标注,当遇上web.xml与@WebServlet标注同名的servlet,由web.xml提供的映射会重写由@WebServlet标注定义的映射。

有关重写知识请参考→ “web.xml与@WebServlet映射问题及其处理”
当然,没有特殊需求还是不要同时使用web.xml和WebServlet注解,因为配置很容易出现混乱冲突,同时tomcat还可能启动报错,对此知识感兴趣可以点击上方超链接

以上是关于使用WebServlet注解和web.xml配置servlet映射路径的区别及注意事项的主要内容,如果未能解决你的问题,请参考以下文章

注解WebServlet配置Servlet报404错误的原因

servlet3.0 @WebServlet注解无效的情况

注解配置

Servlet中写了注解@WebServlet但访问servlet报404错误

Servlet中写了注解@WebServlet但访问servlet报404错误

@WebServlet注解