首先,需要先将servlet中java文件编译成字节码文件,然后,启动Tomcat,Tomcat会读取Servlet在web.xml中的配置信息
servlet的配置信息如下所示:
<!--配置出一个servlet的基本信息,将classes中的servlet以servlet-name的方式映射到程序中-->
<servlet>
<servlet-name>myapp</servlet-name> <!--配置出servlet的虚拟名称-->
<servlet-class>hnnd.xg.FisrtSerlet</servlet-class> <!--这里是指编译过后的class文件在src中位置-->
<load-on-startup>2<load-on-startup><!--加载启动的顺序,系统提供的默认的servlet顺序是1,所以这个最好小于1,默认启动顺序可以使其在启动的时候,生成过一个servlet的对象,减少下次的访问时间-->
</servlet>
<!--配置servlet的访问路径-->
<servlet-maping>
<servlet-name>myapp</servlet-name> <!--上面定义过的servlet的名称-->
<url-pattern>/TestOne</url-pattern> <!--这个是访问servlet的路径,如果为“/”则为默认路径-->
</servlet-maping>
这样一个servlet就配置完成了,当Tomcat开始运行的时候,首先下载web.xml,当客户端开始请求的Tomcat相应资源的时候,首先Tomcat根据用户请求路径在Tocat中寻找对应的servlet的,当找到servlet名之后,调用该servlet方法,或者实例化出该servlet字节码的对象,调用service()找到响应类型的请求后 ,并返回给客户端。一次访问完成。
servlet-maping的配置问题:
1、一个Servlet可以被映射到多个URL地址上
2、URL地址映射还支持通配符*
方式一:以*开头,以扩展名结尾。比如 <url-pattern>*.do</url-pattern>
方式二:以/前缀开头,以*结尾。 比如<url-pattern>/action/*</url-pattern>
3、多个Servlet使用通配符时,有可能有多
以"/"开头(方式二)要比"*"开头(方式一)优先级高
都以"/"开头,还是有多个匹配,找最匹配的
4、如果一个Servlet的映射为一个"/",就称之为默认的Servlet,它负责处理没有映射路径的URL请求的响应。
个配置的Servlet。
例如 :
NO.1 <url-pattern>/abc</url-pattern>
NO.2 <url-pattern>/abc/*</url-pattern>
NO.3 <url-pattern>/</url-pattern>
NO.4 <url-pattern>/abc/*.html</url-pattern>
假如主机就是LocalHost 当访问localhost:8080/ 时候,我们会访问默认的第三个。
如果地址是localhost:8080/abc 时候,可以通配的有第一个和第三个,但是第一个可以完全匹配,故会访问一个usl对应的servlet。
如果地址是localhost:8080/abc/a.html 可以统配第二个和第四个,但是第四个更可以完全统配上,故会访问第四个servlet。