URL映射配置
由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet 的 类映射到一个URL地址上
在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成url配置。
<servlet>
<servlet>元素用于注册Servlet 类
两个主要的子元素:<servlet-name>和<servlet-class>
<servlet-name>用于设置Servlet的注册名称
<servlet-class>用于 匹配 Servlet的完整类名
<servlet-mapping>
<servlet-mapping>元素用于映射 一个已注册的Servlet 类的一个对外访问 url路径(可以是多个)
两个子元素:<servlet-name>和<url-pattern>
<servlet-name>用于指定Servlet的注册名称
<url-pattern>用于 匹配Servlet的对外访问url路径
如 之前的例子
<servlet>
<servlet-name>Demon1</servlet-name>
<servlet-class>com.servlet.rep.Demon1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demon1</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
同一个注册过的Servlet可以被映射到多个URL上
即不同<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名 ,且<url-pattern>的值可以不相同。
例:
<servlet>
<servlet-name>Demon1</servlet-name>
<servlet-class>com.servlet.rep.Demon1</servlet-class>
</servlet>
<!--完成注册-->
<servlet-mapping>
<servlet-name>Demon1</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
<!--url 为 /index 的访问路径-->
<servlet-mapping>
<servlet-name>Demon1</servlet-name>
<url-pattern>/demon.html</url-pattern>
</servlet-mapping>
<!--url 为 /demon.html 的访问路径-->
<servlet-mapping>
<servlet-name>Demon1</servlet-name>
<url-pattern>/fir/demon.aspx</url-pattern>
</servlet-mapping>
<!--url 为 /fir/demon.aspx 的访问路径-->
通过访问其对应的url都能访问到com.servlet.rep.Demon1这个servlet这个类中的内容
URL 中使用*通配符映射
在Servlet映射到的URL中也可以使用*通配符
因
*可以匹配任意的字符,所以在某些url中使用起来很方便
但只能有以下俩种固定的格式:
1. 格式是*.扩展名 (如 : *.ggggg 该方法在新版本规则中不能适用)
2. 格式是以正斜杠/开头并以/*结尾 (如: /fir/*)
例:
<servlet>
<servlet-name>Demon1</servlet-name>
<servlet-class>com.servlet.rep.Demon1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demon1</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
此时在后面随意加载任何字符都会返回同一页面
注:
在有多个匹配规则同时满足时
遵循 哪个规则 更接近匹配的url使用哪个
例:
访问 url为/demon 时 ,若有 俩个匹配规则
为/* , /demon 和 /demon/*
则选择第二个匹配规则 ,其次是第三个,最后是第一个
缺省Servlet
如果某个Servlet的映射路径仅仅为一个正斜杠/,那么这个
Servlet 就为当前Web应用程序的缺省Servlet。
凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理
即 : 缺省Servlet用于 处理所有 其他Servlet都不处理的访问请求。
例如:
@WebServlet(asyncSupported = true, urlPatterns = { "/" })
本文详细介绍了在web.xml中如何进行URL映射配置,包括元素注册、元素映射,以及URL通配符的使用。解释了当有多个匹配规则时的优先级原则,并阐述了缺省Servlet的作用,即处理未明确映射的请求。
1596

被折叠的 条评论
为什么被折叠?



