- POST获取请求体
- 请求体中封装了 POST请求的请求参数
- 获取流对象 再从流对象中那数据 一种字节流 一种字符流 BufferedReader getReader()获取字符输入流 只能操作字符
- ServletInputStream getInputStream(); 获取字节输入流 可以操作所有类型数据
- 获取请求参数通用方式
- String getParameter(String name); 根据参数名称获取参数值 username=zs&password=13
- String getParameterValues(String name);根据参数名称获取参数数组 hobby=ss&&hobby=sdad
- Enumeration<String> getHeaderNames(); 后去所有的请求的名称
- Map<String,String[]>getParameterMap(); 获取所有的参数的Map集合
- request请求转发 是一中服务器内部资源跳转的方式
- request.getRequestDispatcher("...").forward(request,response);
- 特点 浏览器地址栏路径不发生变化
- 只能转发到当前服务器内部资源中
- 转发是一次请求
- 数据共享
- 域对象:一个有作用范围的对象,在范围内可以共享数据
- request域:代表一次请求的范围,一般用于请求转发的多个资源共享数据
- Servlet之间数据通信
- setAttribute(String name ,Object obj):存储数据
- getAttitube(String name):通过键获取值
- removeAttribute(String name);通过键移除键直对
- 获取ServletContext
- 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);
}
}