HTTP协议

HTTP协议概念

  • 超文本传输协议
  • 基于TCP连接的传输协议
  • 默认端口是80
  • 基于 请求-响应 模式的协议
HTTP版本

HTTP/1.0 连接后只能获取一个资源
HTTP/1.1 连接后获得多个web资源,连接不会立即断开,直到一段时间没操作,自动断开

通过telnet命令,了解http协议
  1. 启动tomcat服务器
  2. cmd --> telnet localhost 80 (win7需要手动打开telnet服务)
打开telnet服务
telnet 命令
  1. 乱码只需要 “Ctrl + ]” ,然后回车
乱码改正后这样,此时还没回车
输入请求,此处输入无法删除,两次回车后才能响应
响应

HTTP请求

一个完整的HTTP请求包括如下内容:

完整的请求

请求行

GET /books/java.html HTTP/1.1 分为三个部分:

  • 请求方式
    • GET POST HEAD OPTIONS DELETE TRACE PUT CONNECT
    • 常用的 GET 与 POST
  • 资源路径
  • 协议版本

GET 与 POST 的区别:

  • get把参数显示在地址栏上,安全级别低,不支持大数据
  • post把参数放在请求体中,安全级别高,支持大数据
HTTP协议之请求

请求头

图片.png

重要的头

  • if-Modified-Since
  • User-Agent
  • referer 当前网页的来源,防止盗链
防盗链

请求体

多个数据之间用&分隔
name=value&name=value&name=value...

HTTP响应

一个HTTP响应代表服务器向客户端回送的数据。

HTTP响应

响应行

响应行
状态码

响应头

常见的响应头
/**
 * 和location和302一起完成重定向
 * @author limaoquan
 *
 */
public class ServletDemo1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //向页面输出内容
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("向班长借钱...");
        //我没钱
        response.setStatus(302);
        //告诉我副班长的地址
        response.setHeader("location", "/day09/1.html");//客户端的决对路径
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

/**
 * 页面定时跳转
 * @author limaoquan
 *
 */
public class refresh extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //想页面输出内容
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("向班长借钱...");
        //5秒后跳转到/day09/1.html
        response.setHeader("refresh", "5;url=/day09/1.html");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
控制缓存
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容