servlet的URL配置

来源:互联网 发布:计算机5层网络层次 编辑:程序博客网 时间:2024/05/20 19:18

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。
l当访问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

0 0
原创粉丝点击