URL配置
就是配置地址,在网页上输入的地址
地址栏中输入的url的前面为:http://localhost:8080/项目名/配的url
定义访问的方式
l 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使
用<servlet>元素和<servlet-mapping>元素完成。
l<servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。
同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。
1. 以/开头:/代表的是工程路径(/工程名称)必须要加/
/* : 随便怎么访问:不管访问的地址是什么,都由写在servlet-name中的类来处理。
2. 以*开头:必须要加后缀名(后缀名任意)后缀名不能用*
注意:/*.后缀名:此种情况不允许
3. 如果只是配置一个/,那么此servlet就是一个默认的servlet,它用来处理所有找不到匹配的url的请求
系统也会有一个默认的这个配置,但是我们的工程下找的话,就是就近,配的是我们工程里面的,当没有输入项目名的时候,就会拿系统的默认的:
l如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。
l凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。
l在<tomcat的安装目录>\conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。
当访问 Tomcat 服务器中的某个静态 HTML 文件和图片时,实际上是在访问这个缺省 Servlet 。
对于如下的一些映射关系:
lServlet1 映射到/abc/*
lServlet2 映射到/*
lServlet3 映射到/abc
lServlet4 映射到*.do
问题:
l当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。
l当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应
Servlet引擎将调用Servlet3。
l当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。
l当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
l当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
l 配置优先级: 精确匹配 > 以/开头的匹配 > 以*开头的匹配
l 如果配置成/ 那么就是一个缺省的servlet,此Servlet处理所有找不到匹配路径的url