web.xml配置
<servlet>
<!-- servlet的内部名称-->
<servlet-name>MyServlet</servlet-name>
<!-- servlet的类的全路径:包名+类名 -->
<servlet-class>com.qucy.controller.MyServlet</servlet-class>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称,一定要和上面的内部名称保持一致 -->
<servlet-name>MyServlet</servlet-name>
<!-- servlet的映射路径 -->
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
- 在浏览器最初访问时,首先是从servlet-mapping标签中的url-pattern标签进行匹配。
- 匹配成功后,再根据这个映射值,也就是servlet-mapping标签里的servlet-name标签里的值与servlet标签里的servlet-name标签的值进行匹配,值必须一样。
- 匹配成功后,就根据servlet标签里的servlet-class标签的值找到src文件下的全路径,并且执行这个servlet类。
@WebServlet注释配置
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet{
}
如果不在web.xml进行配置虚拟路径,则可以使用@WebServlet注释在继承了HttpServlet的类前面使用,在浏览器发送请求时,会去寻找到servlet类中的是否存在对应的url的@WebServlet注释。存在就执行这个servlet类。
总结
-
相同点:
1. 都是可以通过url地址访问到servlet类 -
注释@WebServlet
- 优点:代码少,方便阅读。
- 缺点: 如果存在servlet类文件,不便于查找和修改。
-
web.xml
- 优点: 集中管理servlet类的请求路径,方便查找和修改。
- 缺点: 大量的servlet类的路径存在,代码多,可读性差。