获取请求体数据 POST

  • POST获取请求体
    1.   请求体中封装了 POST请求的请求参数
    2.   获取流对象 再从流对象中那数据 一种字节流 一种字符流
    3.   BufferedReader getReader()获取字符输入流 只能操作字符
      1.    ServletInputStream  getInputStream(); 获取字节输入流 可以操作所有类型数据
  1. 获取请求参数通用方式
    1.   String getParameter(String name); 根据参数名称获取参数值 username=zs&password=13
    2.   String getParameterValues(String name);根据参数名称获取参数数组 hobby=ss&&hobby=sdad
    3.   Enumeration<String> getHeaderNames();  后去所有的请求的名称
    4.   Map<String,String[]>getParameterMap(); 获取所有的参数的Map集合
  •  request请求转发 是一中服务器内部资源跳转的方式 
  • request.getRequestDispatcher("...").forward(request,response);
  • 特点 浏览器地址栏路径不发生变化
  • 只能转发到当前服务器内部资源中
  • 转发是一次请求

 

  • 数据共享
    •   域对象:一个有作用范围的对象,在范围内可以共享数据
    • request域:代表一次请求的范围,一般用于请求转发的多个资源共享数据
  1. Servlet之间数据通信 
  •   setAttribute(String name ,Object obj):存储数据
  •        getAttitube(String name):通过键获取值
  •   removeAttribute(String name);通过键移除键直对

 

  • 获取ServletContext
  1. ServletContext getServletContext();

 

  • 对最后一个方法举例
  •     Map<String, String[]> parameterMap = request.getParameterMap();

    Set<String> keySet = parameterMap.keySet();//获取Keyset字符串数组

    for (String name : keySet) {//循环Keyset

    System.out.println(name); //输出键名称

    String[] values = parameterMap.get(name);

    for (String value : values) {

    System.out.println(value);//输出键值数组
    }
    System.out.println("--------");

    }

    }

  

  • GET和POST中文乱码问题  设置流的编码 request.setCharacterEncoding("utf-8"); 即可解决  get不会乱码 post 使用中文 要注意

 

    注册实例 

<form action="/reDemo5" method="post">
<input type="text" placeholder="in" name="username"><br>
<input type="password" placeholder="out" name="password"><br>
<input type="submit" value="resgist">
</form>

    BufferedReader br = request.getReader();
String line = null;
while ((line=br.readLine())!=null){
System.out.println(line);

}
}



 

posted @ 2020-03-07 21:26  sasuke。  阅读(1822)  评论(0编辑  收藏  举报