- Java Web基础与实例教程
- 孔祥盛 赵芳主编
- 504字
- 2025-03-19 16:21:04
2.1.7 Eclipse中Servlet的URL Mappings和Servlet的urlPatterns
使用Eclipse创建Servlet程序的过程中,URL Mappings描述了URL路径和Servlet物理文件之间的映射关系。例如前文创建的ABCServlet.java程序,其中的@WebServlet("/ABCServlet")是一个Java注解,其功能是将浏览器地址栏URL路径中的“/ABCServlet”映射为ABCServlet.java物理文件。在浏览器地址栏中输入URL路径http://localhost:8080/get/ABCServlet,浏览器就会向Tomcat服务器发送GET请求,Tomcat服务器接收到该请求,就会将该请求指向get项目的ABCServlet.java,并实例化ABCServlet类的对象,触发ABCServlet的doGet()方法执行。
URL Mappings之所以是复数形式,是因为一个Servlet程序可以映射多个URL Mapping。例如注解@WebServlet(urlPatterns={"/helloServlet","/ABCServlet"}),定义了两个URL Mapping,它们都指向了同一个Servlet程序。
准确地讲,注解@WebServlet的urlPatterns参数配置了URL路径与Servlet程序之间的映射关系(只不过在Eclipse中使用了URL Mappings)。
还可以给Servlet的urlPatterns分配目录。对于刚刚创建的ABCServlet程序,如果将注解@WebServlet修改为@WebServlet("/test/ABCServlet"),浏览器地址栏中输入URL路径http://localhost:8080/get/test/ABCServlet,才会触发ABCServlet的deGet()方法执行。
上述urlPatterns都属于精确匹配,urlPatterns还支持“*”通配符模糊匹配,模糊匹配有如下两种用法。
用法1:*.扩展名(不以斜杠开头)。例如“*.do”表示任何扩展名是“do”的URL路径都可以映射到该Servlet程序。
用法2:/*(以斜杠开头),例如“/*”“/get/*”。其中“/*”表示任何URL路径都可以映射到该Servlet程序。
说明1:urlPatterns如果以斜杠开头,斜杠表示Web项目的虚拟路径。
说明2:urlPatterns的典型错误用法是“/*.do”。