Request获取请求参数
* Map<String,String[ ]> getParameterMap():获取所有参数Map集合 //遍历 Map<String,
String[]> map = req.getParameterMap(); for (String key : map.keySet()) {
System.out.print(key + ":"); // 获取值 String[] values = map.get(key); for (String
value : values) { System.out.print(value + " "); } System.out.println(); }
* String[ ] getParameterValues(String name)︰根据名称获取参数值(数组)
* String getParameter(String name):根据名称获取参数值(单个值)
乱码处理
post方式
//设置字符输入流的编码 request.setCharacterEncoding("utf-8");
对于get方式,他与post方式获取参数的原理不同,不能通过上述方式处理乱码(据说tomcat8已经解决了这个问题,后续内容不用理会)
先说get方式的乱码原因:对服务器发起请求时,浏览器会把这些汉字进行url编码,tomcat接收到这些字符时,会对这些字符进行解码,默认用的不是utf-8,而是iso-8859-1,而且内部并没有提供修改解码方式的一个接口。
URL编码的步骤
1.将字符串按照编码方式转为二进制
2.每个字节转为2个16进制数并在前边加上%
方案:先对得到的数据以iso-8859-1方式进行编码,得到字节数据,再对字节数组以utf-8解码就得到正确文字。
byte[] bytes = username.getBytes(StandardCharsets.iso-8859-1); username = new
string(bytes,standardCharsets.UTF-8);
请求转发
//请求转发 request.getRequestDispatcher( path: "/req6").forward(request, response);
请求转发资源间共享数据:使用Request对象
* void setAttribute(String name, Object o):存储数据到request域中
* Object getAttribute(String name):根据key,获取值
* void removeAttribute(String name):根据key,删除该键值对
请求转发特点:
* 浏览器地址栏路径不发生变化
* 只能转发到当前服务器的内部资源
* 一次请求,可以在转发的资源间使用request共享数据