Request 02Request_获取请求数据

注意tomcat新增文件的时候要重启服务器(debug模式)

1. 获取请求消息数据

1. 获取请求行数据

            * GET /day14/demo1?name=zhangsan HTTP/1.1
            * 方法:
                1. 获取请求方式 :GET
                    * String getMethod()  
                2. (*)获取虚拟目录:/day14
                    * String getContextPath()
                3. 获取Servlet路径: /demo1
                    * String getServletPath()
                4. 获取get方式请求参数:name=zhangsan
                    * String getQueryString()
                5. (*)获取请求URI:/day14/demo1
                    * String getRequestURI():        /day14/demo1
                    * StringBuffer getRequestURL()  :http://localhost/day14/demo1

                    * URL:统一资源定位符 : http://localhost/day14/demo1    中华人民共和国
                    * URI:统一资源标识符 : /day14/demo1                    共和国
                
                6. 获取协议及版本:HTTP/1.1
                    * String getProtocol()

                7. 获取客户机的IP地址:
                    * String getRemoteAddr()

package cn.itcast.web.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;

/**

  • 演示Request对象获取请求行数据

*/

@WebServlet("/requestDemo1")
public class RequestDemo1 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    /*
        1. 获取请求方式 :GET
            * String getMethod()
        2. (*)获取虚拟目录:/day14
            * String getContextPath()
        3. 获取Servlet路径: /requestDemo1
            * String getServletPath()
        4. 获取get方式请求参数:name=zhangsan
            * String getQueryString()
        5. (*)获取请求URI:/day14/demo1
            * String getRequestURI():        /day14/requestDemo1
            * StringBuffer getRequestURL()  :http://localhost/day14/requestDemo1
        6. 获取协议及版本:HTTP/1.1
            * String getProtocol()

        7. 获取客户机的IP地址:
            * String getRemoteAddr()

     */
    //1. 获取请求方式 :GET
    String method = request.getMethod();
    System.out.println(method);
    //2.(*)获取虚拟目录:/day14
    String contextPath = request.getContextPath();
    System.out.println(contextPath);
    //3. 获取Servlet路径: /demo1
    String servletPath = request.getServletPath();
    System.out.println(servletPath);
    //4. 获取get方式请求参数:name=zhangsan
    String queryString = request.getQueryString();
    System.out.println(queryString);
    //5.(*)获取请求URI:/day14/demo1
    String requestURI = request.getRequestURI();
    StringBuffer requestURL = request.getRequestURL();
    System.out.println(requestURI);
    System.out.println(requestURL);
    //6. 获取协议及版本:HTTP/1.1
    String protocol = request.getProtocol();
    System.out.println(protocol);
    //7. 获取客户机的IP地址:
    String remoteAddr = request.getRemoteAddr();
    System.out.println(remoteAddr);
}

}

2. 获取请求头数据

            * 方法:
                * (*)String getHeader(String name):通过请求头的名称获取请求头的值
                * Enumeration getHeaderNames():获取所有的请求头名称

package cn.itcast.web.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;
import java.util.Enumeration;

@WebServlet("/requestDemo2")
public class RequestDemo2 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

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

}

}
package cn.itcast.web.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;
import java.util.Enumeration;

@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //演示获取请求头数据:user-agent

    String agent = request.getHeader("user-agent");
    //判断agent的浏览器版本
    if(agent.contains("Chrome")){
        //谷歌
        System.out.println("谷歌来了...");
    }else if(agent.contains("Firefox")){
        //火狐
        System.out.println("火狐来了...");
    }

}

}
package cn.itcast.web.request;

import javax.servlet.ServletContext;
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("/requestDemo4")
public class RequestDemo4 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

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("播放电影....");
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write("播放电影....");
        }else{
            //盗链
            //System.out.println("想看电影吗?来优酷吧...");
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write("想看电影吗?来优酷吧...");
        }
    }

}

}

Request 02Request_获取请求数据_第1张图片

3. 获取请求体数据:

            * 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
            * 步骤:
                1. 获取流对象
                    *  BufferedReader getReader():获取字符输入流,只能操作字符数据
                    *  ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
                        * 在文件上传知识点后讲解

                2. 再从流对象中拿数据

package cn.itcast.web.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.BufferedReader;
import java.io.IOException;

@WebServlet("/requestDemo5")
public class RequestDemo5 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取请求消息体--请求参数

    //1.获取字符流
    BufferedReader br = request.getReader();
    //2.读取数据
    String line = null;
    while((line = br.readLine()) != null){
        System.out.println(line);
    }

}

以上代码打印出类似username=sagfgj&password=123的结果

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}

}

1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数

            1. String getParameter(String name):根据参数名称获取参数值    username=zs&password=123
            2. String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=xx&hobby=game
            3. Enumeration getParameterNames():获取所有请求的参数名称
            4. Map getParameterMap():获取所有参数的map集合

            * 中文乱码问题:
                * get方式:tomcat 8 已经将get方式乱码问题解决了
                * post方式:会乱码
                    * 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");

package cn.itcast.web.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.BufferedReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

@WebServlet("/requestDemo6")
public class RequestDemo6 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //post 获取请求参数

    //根据参数名称获取参数值
    String username = request.getParameter("username");
   /* System.out.println("post");
    System.out.println(username);*/

   //根据参数名称获取参数值的数组
    String[] hobbies = request.getParameterValues("hobby");
    /*for (String hobby : hobbies) {
        System.out.println(hobby);
    }*/

    //获取所有请求的参数名称

    Enumeration parameterNames = request.getParameterNames();
    /*while(parameterNames.hasMoreElements()){
        String name = parameterNames.nextElement();
        System.out.println(name);
        String value = request.getParameter(name);
        System.out.println(value);
        System.out.println("----------------");
    }*/

    // 获取所有参数的map集合
    Map parameterMap = request.getParameterMap();
    //遍历
    Set keyset = parameterMap.keySet();
    for (String name : keyset) {
        
        //获取键获取值
        String[] values = parameterMap.get(name);
        System.out.println(name);
        for (String value : values) {
            System.out.println(value);
        }

        System.out.println("-----------------");
    }


}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //get 获取请求参数

/*

    //根据参数名称获取参数值
    String username = request.getParameter("username");
    System.out.println("get");
    System.out.println(username);*/

    this.doPost(request,response);
}

}
package cn.itcast.web.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;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

@WebServlet("/requestDemo7")
public class RequestDemo7 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //1.设置流的编码
    request.setCharacterEncoding("utf-8");

    //获取请求参数username
    String username = request.getParameter("username");

    System.out.println(username);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    this.doPost(request,response);
}

}



Title



demo4...






注册页面









注册页面




游戏 学习


你可能感兴趣的:(java)