Since the Servlet 3.0 specification there is the possibility of declaring servlet mapping metadata as annotation on the servlet class:
@WebServlet(name=\"appInfo
I think the use case is like other use cases for other annotations in various frameworks where we used separate XML prior to annotations.
You can say the same about JAXB annotations. Really, you can implement one class and use multiple strategies of its mapping to XML. But once you move to annotations you create kind of tight coupling between class and metadata. The same is relevant for Spring annotations. Etc.
In practice we rarely deploy the same servlet twice using different configuration or use the same EJB twice or map class to different XML schemas. But in this case it is very convenient to store metadata together with code. This problem is solved in java with annotations.
Bottom line: use this definition in concrete application where each servlet has certain functionality and role and by definition is not reusable and tightly coupled with its URL mapping and configuration. Do not use this if you a creating environment like Struts or Spring controller. In this case the application programmer should be able to configure the servlet.