A servlet has a file path name, obviously, like classes/registration/SignUpServlet.class (a path to an actual class file). The original developer of the servlet class chose the class name (and the package name that defines part of the directory structure), and the location on the server defines the full path name. But anyone who deploys the servlet can also give it a special deployment name. A deployment name is simply a secret internal name that doesn’t have to be the same as the class or file name. It can be the same as the servlet class name (registration.SignUpServlet) or the relative path to the class file (classes/registration/SignUpServlet.class), but it can also be something completely different (like EnrollServlet).
Finally, the servlet has a public URL name—the name the client knows about. In other words, the name coded into the HTML so that when the user clicks a link that’s supposed to go to that servlet, this public URL name is sent to the server in the HTTP request.
Client-known URL name
The client sees a URL for the servlet (in the HTML), but doesn’t really know how that servlet name maps to real directories and files back on the server. The public URL name is a fake name, made up for clients.
Deployer-known secret internal name
The deployer ...