Servlet容器如何处理请求资源路径以及匹配
比如:我们在浏览器地址栏输入:http://ip:port/appname/abc.html浏览器会将
"/appname/abc.html"作为请求资源路径发送给Servlet容器。
step1:Servlet容器会先假设访问的是一个Servlet,会依据应用名(appname)找到应用所在的文件夹,然后找到web.xml文件。
step2:匹配<url-pattern>
1)精确匹配(完全匹配):“/”、大小写、名字完全一样。
2)通配符匹配:使用 “” 来匹配任意长度的字符串,比如:<url-pattern>/</url-pattern>
3)后缀匹配:使用“.”开头,后接任意的字符串,比如:<url-pattern>.do</url-pattern>
注意事项:*.do表示匹配所有以.do结尾的请求,注意不写“/”。比如地址栏输入:/del.do或者 /aaaaaaa/bbbbb.do
step3:如果都不匹配,则容器认为访问的是一个静态资源文件(比如html文件),然后容器会查找该文件,如果找到则返回,否则会返回404。
一个Servlet如何处理多种请求
step1:使用后缀匹配模式,比如<url-pattern>*.do</url-pattern>
step2:分析请求资源路径,然后依据分析的结果分别进行不同的处理,需使用String request.getRequestURI();
注意事项:是URI不是URL。
网友评论