案例 1:
请求资源路径:http://localhost:8080/web01/greeting?name=zs
- 浏览器通过
localhost:8080连接服务器; - 服务器在
webapps目录下寻找web01目录,找到后进入web01目录内寻找WEB-INF目录,在进入WEB-INF目录内寻找web.xml文件; - 再进入
web.xml文件中找到greeting,从而找到对应的servlet-name,再找到某个servlet的子类,并创建该类的实例对象; - 再调用该对象的
service方法,并传入request和response两个对象参数,service方法会从request对象中获取到name=zs,然后执行service方法中的业务逻辑语句,并把结果写入到response中; - 而后
server会从response中获得结果传送给浏览器显示出来。
案例 2:
请求资源路径:http://ip:port/appname/abc.html
Servlet 容器处理请求资源路径的步骤
step1 依据 /appname 查找该应用对应的目录(比如查找 webapps 目录下面的是否存在 appname 目录)。
step2 在找到的目录下面,找到 web.xml 文件,然后解析节点 的内容,判断是否与 /abc.html 相匹配。
匹配规则:
-
精确匹配: 即要求
的内容与/abc.html完全一致。 -
通配符匹配: 使用
*代表任意的字符串。 比如在中使用:/*表示任意字符串/abc/*表示有/abc/的字符串 -
后缀匹配: 不能使用
/开头,要求*.任意的字符串。 比如:*.do要求以.do结尾*.action要求以.action结尾
step3 尝试查找 /abc.html 文件,如果找到,则返回该文件,找不到,则返回 404 状态码。
