您当前的位置: 首页 >  服务器

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

解析浏览器访问服务器 Servlet 应用程序的交互过程(Servlet 容器如何处理请求资源路径)

liaowenxiong 发布时间:2021-02-26 20:00:25 ,浏览量:1

案例 1:

请求资源路径:http://localhost:8080/web01/greeting?name=zs

  1. 浏览器通过 localhost:8080 连接服务器;
  2. 服务器在 webapps 目录下寻找 web01 目录,找到后进入web01 目录内寻找 WEB-INF 目录,在进入 WEB-INF 目录内寻找 web.xml 文件;
  3. 再进入 web.xml 文件中找到 greeting,从而找到对应的 servlet-name,再找到某个 servlet 的子类,并创建该类的实例对象;
  4. 再调用该对象的 service 方法,并传入 requestresponse 两个对象参数,service 方法会从 request 对象中获取到 name=zs,然后执行 service 方法中的业务逻辑语句,并把结果写入到 response 中;
  5. 而后 server 会从response 中获得结果传送给浏览器显示出来。

案例 2:

请求资源路径:http://ip:port/appname/abc.html

Servlet 容器处理请求资源路径的步骤

step1 依据 /appname 查找该应用对应的目录(比如查找 webapps 目录下面的是否存在 appname 目录)。

step2 在找到的目录下面,找到 web.xml 文件,然后解析节点 的内容,判断是否与 /abc.html 相匹配。

匹配规则:

  1. 精确匹配: 即要求 的内容与 /abc.html 完全一致。

  2. 通配符匹配: 使用*代表任意的字符串。 比如在 中使用: /* 表示任意字符串 /abc/* 表示有 /abc/ 的字符串

  3. 后缀匹配: 不能使用 / 开头,要求*.任意的字符串。 比如: *.do 要求以.do 结尾 *.action 要求以.action 结尾

step3 尝试查找 /abc.html 文件,如果找到,则返回该文件,找不到,则返回 404 状态码。

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.1170s