Análisis de los datos del mensaje de solicitud

Dirección del blog personal https://nfreak-man.cn El
formato de datos del mensaje de solicitud es:
1. Línea de solicitud
2. Encabezado de solicitud
3. Línea en blanco de
solicitud 4. Cuerpo de solicitud
Ejemplo:
GET /index.html HTTP / 1.1
Host: localhost
User- Agente: Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 51.0.2704.106 Safari / 537.36
Aceptar: text / html, image /, / *; q = 0.8
Referer: http: // localhost / day14 / index.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN, zh; q = 0.8

Obtener datos de línea de solicitud

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取请求方式:Get
    String method = request.getMethod();
    System.out.println(method);
    //获取虚拟目录:/day14
    String contextPath = request.getContextPath();
    System.out.println(contextPath);
    //获取Servlet路径:/demo1
    String servletPath = request.getServletPath();
    System.out.println(servletPath);
    //获取get方式请求参数:name = aaa
    String queryString = request.getQueryString();
    System.out.println(queryString);
    //获取请求URI:/day14/demo1
    String requestURI = request.getRequestURI();
    StringBuffer requestURL = request.getRequestURL();
    System.out.println(requestURI);
    System.out.println(requestURL);
    //获取协议及版本:HTTP/1.1
    String protocol = request.getProtocol();
    System.out.println(protocol);
    //获取客户机的IP地址
    String remoteAddr = request.getRemoteAddr();
    System.out.println(remoteAddr);
}

Obtener datos de encabezado de solicitud

Obtenga todos los datos del encabezado de la solicitud

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取请求头数据
    //获取所有请求头名称
    Enumeration<String> headerNames = request.getHeaderNames();
    //遍历
    while(headerNames.hasMoreElements()){
        String name = headerNames.nextElement();
        //根据名称获取请求头的值
        String value = request.getHeader(name);
        System.out.println(name+"---"+value);
    }

Obtenga el agente de usuario de datos de encabezado de solicitud para implementar la clasificación del navegador

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取请求头数据
    String agent = request.getHeader("user-agent");
    //判断agent的浏览器版本
    if(agent.contains("Chrome")){
        //谷歌
        System.out.println("谷歌");
    }else if(agent.contains("Firofox")){
        //火狐
        System.out.println("火狐");
    }else{
        System.out.println("Edge");
    }
}

Obtenga el referente de datos del encabezado de solicitud para realizar una cadena antirrobo

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取请求头数据:referer
    String referer = request.getHeader("referer");
    System.out.println(referer);//http://localhost/day14/login.html

    //防盗链
    if (referer != null){
        if(referer.contains("/day14")){
            //正常访问
            System.out.println("访问来源正确");
        }else{
            System.out.println("访问来源错误");
        }
    }
}

Obtener cuerpo de solicitud

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取请求消息体
    //获取字符流
    BufferedReader br = request.getReader();
    //获取字节流
    ServletInputStream inputStream = request.getInputStream();
    //读取数据
    String line = null; 
    while ((line = br.readLine()) != null){
        System.out.println(line);
    }
    //根据参数名获取参数值
    String username = getInitParameter("username");
    String password = getInitParameter("password");
    System.out.println(username);
    System.out.println(password);
}
Publicado 28 artículos originales · elogiado 0 · visitas 722

Supongo que te gusta

Origin blog.csdn.net/William_GJIN/article/details/104784649
Recomendado
Clasificación