• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

浅谈web服务器项目中request请求和response的相关响应处理

java 搞代码 4年前 (2022-01-09) 25次浏览 已收录 0个评论

  我们经常使用别人的服务器进行构建网站,现在我们就自己来写一个自己的服务来使用。

准备工作:下载所需的题材及文档

注:完整项目下载

一、request请求获取

 1、了解request请求

在写服务器之前,我们需要知道客户端发送给我们哪些信息?以及要求我们返回哪些信息?经过测试我们能够知道用户客户端发送的信息有以下几点:

客户端发送到服务器端的请求消息,我们称之为请求(request),其实就是一个按照http协议的规则拼接而成的字符串,Request请求消息包含三部分: 请求行 消息报头 请求正文
        第一部 请求行
            格式:
           &本文来源gaodai#ma#com搞@@代~&码*网/nbsp;Method Request-URI HTTP-Version CRLF
             各部分分别为:
            Method表示请求方法;一般为GET或者POST ;Request-URI是一个统一资源标识符; HTTP-Version表示请求的HTTP协议版本; CRLF表示回车和换行
            例如:
            GET /test.html HTTP/1.1  

        第二部 消息报头 http header
            例如:
            GET /test.html HTTP/1.1
            Host: 127.0.0.1:9999
            User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            Accept-Language: zh-CN,en;q=0.8,zh;q=0.5,en-US;q=0.3
            Accept-Encoding: gzip, deflate
            Connection: keep-alive 

        第三部 请求正文 http body
            请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的字符串信息

        注意:在第二部分header和第三部分body之间有个空行,除非没有请求正文(如果你想要亲自看到效果,请参考:浏览器中GET和POST的区别),这是因为用户在浏览网页时提交给服务器的信息是不同的

 2、实现

         经过以上分析,我们就能够清楚的知道,客户端发送给服务器的请求,请求信息有使用的协议、请求的方法、请求的资源路径、请求的消息报头、判断请求的内容是否为静态资源、判断请求的内容是否为动态资源、判断是否为空请求,为了使用的方便,我们需要将其封装起来,总不能使用一次读取一次吧,这样做实在是太浪费系统资源与时间了,如下代码,就是一个接口类,用于获取客户端发送过来的属性

package com.sample.http;
import java.util.Map;
  // http协议的请求
public interface HttpRequest {
  //获得请求的协议
  public String getProtocol();
  //获得请求的方法
  public String getRequestMethod();
  //获得请求的路径
  public String getRequestPath();
  //获得请求的消息报头
  public Map<String,String> getRequestHeader();
  //根据参数的名字获得请求带过来的参数值
  public String getParameter(String parameterName);
  //判断当前请求的否是静态资源
  public boolean isStaticResource();
  //判断当前请求的否是动态资源
  public boolean isDynamicResource();
  //判断当前请求的否是为空请求(有些浏览器会自动发送空请求)
  public boolean isNullRequest();
}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:浅谈web服务器项目中request请求和response的相关响应处理
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址