1.Servlet如何处理请求资源路径
http://localhost:8080/Sc807-2Web10/List
Sc1807-2Web09/List:请求资源路径
web服务器对请求地址的处理过程
1.浏览器依据ip和Servlet容器之间建立连接,然后将请求资源路径发送过去给容器
2.容器依据应用名Sc1807-2Web10找到应用所在的文件夹,容器会默认请求的是一个Servlet,
查找web.xml文件中所有的servlet配置<url-pattern>,看是否有匹配的servlet
匹配servlet规则-精确匹配
.通过将请求资源路径中的具体资源名称和web.xml文件中的url-pattern进行对比,严格匹配
相等后找到对应资源并执行
.如<url-pattern>/abc.html</url-pattern>
.尽管应用中有abc.html这个具体的页面,也会去执行url-pattern对象的servlet,而不是返回
具体的abc.html
匹配servlet规则-通配符匹配
.使用"*"来匹配0个或多个字符
.如<url-pattern>/*</url-pattern>
代表输入任何不用的url地址都将匹配成功
匹配servlet规则-后缀匹配
.不能以"/"开头,使用"*."开头的任意多个字符
.如<url-pattern>*.ad</url-pattern>会匹配以.ad结尾的所有请求
http://localhost:8080/Sc807-2Web10/List.ad
http://localhost:8080/Sc807-2Web10/List/d/d/l.ad
无匹配的servlet的处理
.如果精确匹配,通配符匹配,后缀匹配都没有成功,容器会查找相应的文件
.查找到对应的文件则返回,找不到则404
ps:优先级最高的是精确匹配
为什么要将多个servlet合并.
一般情况下,servlet的主要作用为充当控制前的角色,即接受请求并分发给不同的资源,
这时只要一个servlet就可以完成分发的请求,所以需要将servlet合并
如何实现合并:
-使用后缀匹配模式修改web.xml文件
-获取请求资源路径,(request.getRequestURI())
分析具体的请求资源,依据结果调用不同的分支处处理代码