Java http

概念

超文本传输协议
传输协议:定义了客户端和服务器通信时,发送数据的格式
特点:

  • 基于TCP/IP的高级协议
  • 默认端口80
  • 基于请求/响应模型的 一次请求对应一次相应
  • 无状态的 每次请求相互独立,不能去交互数据

请求信息数据格式

请求行

请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
请求方式:一共有7种 常用的有两种

GET POST的区别(重点)

1.GET: 请求参数在请求行中,在url后,ulr长度有限制
2.POST:请求参数在请求体中,ulr长度没有限制

请求头

请求头名称:请求头值

常见的请求头:

1.User-Agent:浏览器告诉服务器,访问服务器时用的浏览器版本信息。
2.Referer:告诉服务器,我(当前请求)从哪里来?
起防盗链和统计工作作用。

请求空行

空行 (起分割作用)

请求体(正文)

封装POST请求信息的请求参数的

Request

request和response对象的原理

request和response对象通过服务器自动创建,我们只是去使用它们

继承体系

HttpServletRequset -- 接口
| 继承
ServletRequset --接口
| 实现
org.apache.catalina.connector.RequestFacade 类

获取请求行数据

获取请求行数据
GET /day14/demo1?name=jie HTTP/1.1
获取请求方式: GET

String getMethon()

获取虚拟目录: /day14 (重点)

String getContextPath()

获取Servlet路径: /demo1

String getServletPath()

获取get方式请求参数 name=jie

String getQueryString()

获取请求URI :/day14/demo1 (重点)

String getRequestURI() 获取的是:/day14/demo1
StringBuffer getRequestURL 获取的是:http://localhost/day14/demo1

获取协议和版本 :HTTP/1.1

String getPrtocol()

获取客户机的IP地址

String getRemoteAddr()

代码操作

package request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/RequestDemo1")
/*       获取请求方式: GET
        String getMethon()
      获取虚拟目录: /day14 (重点)
        String getContextPath()
      获取Servlet路径: /demo1
        String getServletPath()
        获取get方式请求参数 name=jie
        String getQueryString()
        获取请求URI :/day14/demo1 (重点)
        String getRequestURI() 获取的是:/day14/demo1
        StringBuffer getRequestURL 获取的是:http://localhost/day14/demo1
        获取协议和版本 :HTTP/1.1

        String getPrtocol()

        获取客户机的IP地址

        String getRemoteAddr()*/
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求方式: GET
        String method=req.getMethod();
        System.out.println(method);
        //获取虚拟目录:
        method=req.getContextPath();
        System.out.println(method);
        // 获取Servlet路径
        method=req.getServletPath();
        System.out.println(method);
        //获取get方式请求参数 name=jie
        method=req.getQueryString();
        System.out.println(method);
        // 获取请求URI
        method=req.getRequestURI();
        System.out.println(method);
        //获取协议和版本
        method=req.getProtocol();
        System.out.println(method);
        //获取IP地址
        method=req.getRemoteAddr();
        System.out.println(method);

    }
}


获取请求头

方法
通过请求头名称获取请求头的值

      String getHeader(String name)

获取所有的请求头名称

      Enumeration<String>getHeaderNames
posted @ 2020-12-02 16:28  一个经常掉线的人  阅读(145)  评论(0)    收藏  举报