【服务器截获请求 URI】
开始处理客户端的请求,首先我们需要知道客户端访问的是哪一个资源,我们怎么才能知道客户端访问的哪个资源呢?答案当然是在服务器端获取客户端请求的 URI,那么请求的 URI 在哪里呢?请求的 URI 在 HTTP 请求协议的请求行上。所以我们需要读取请求协议的第一行数据,然后从这些数据中解析出 URI,从而得出客户要访问的是服务器端的哪个资源。
(1)URL 和 URI 是什么?它们之间是什么关系?
A、 URL(Uniform Resource Locator)是统一资源定位符,例如在浏览器地址栏上直接输入的请求路径 http://127.0.0.1:8080/oa/index.html 就是一个 URL,通过它可以定位网络中的某个资源。
B、URI(Uniform Resource Identifier)是统一资源标识符,只是代表网络中某个资源的名称,不具备定位功能,或者说 URI 是 URL 的一部分。例如上面的 URL 中/oa/index.html 就是一个 URI。
(2)HTTP 协议请求协议的详细内容如下图所示,请求行由三部分组成:请求方式+URI+协议版本号,我们需要获取的就是请求行上的 URI
(3)在 HandlerRequest.java 中编写程序读取请求行
A、解析客户请求的字符串,截获 URI
B、通过 BufferedReader 获取请求消息
BufferedReader br = new
BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//获取 requestURI:String requestURI = br.readLine().split(“ ”)[1];
打印输出 requestURI 到控制台
(4)启动 httpserver,打开浏览器,输入 URL:http://127.0.0.1:8080/oa/index.html 进行访问测试