package zdh.cm.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 获取表单参数
* @author Administrator
*
*/
public class Demo3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//若采用get方式提交表单,可以对参数进行手动解码,但这个方法不适合post方式
//采用get方式提交时实体信息会被显示在地址栏,可采用一下方式获得,
String str = request.getQueryString();
//获得的信息如果出现中文,可能产生乱码问题可采用一下方法解决,但这个方法不适合post方式
if("GET".equals(request.getMethod())){
str = new String (str.getBytes("iso-8859-1"),"utf-8");
}
//也可以采用一下方法获得参数信息,这种方法在post中也实用,但是解码方式不同
/**
* 通用的获取参数的方法:(无论get和post可用,下面的post方法中不在重写)
* reuqest.getParameter("name") 获取一个值的参数
* request.getParameterValue("name") 获取多个值的参数
* request.getParameterNames() 获取所有参数名称
* request.getParameterMap() 获取所有参数对象
*/
//request.getParameterNames(),返回枚举类型
Enumeration<String> names = request.getParameterNames();
//将枚举类型names遍历
while(names.hasMoreElements()){
String paraname = names.nextElement();
String paravalue = request.getParameter(paraname);
//此处若想打印正确的中文,请将解码语句插入,以后推荐实用post方式提交表单
paravalue = new String (paravalue.getBytes("iso-8859-1"),"utf-8");
System.out.println(paraname+":"+paravalue);
}
Map<String, String[]> map= request.getParameterMap();
//遍历map集合 的三种方法
// 1)entrySet()
// 2)keySet()
// 3) values()
/**
//1)entrySet()方法:获取键值对对象的Set集合
// Entry对象中包含一个键对象,和一个值对象
Set<Entry<String,String[]>> entryset = map.entrySet();
for (Entry<String, String[]> entry : entrySet) {
//获取键对象
String key = entry.getKey();
//获取值对象(数组的第一个元素就是参数值)
String[] value = entry.getValue();
System.out.println(key+"="+value[0]);
}
/
/**
//2)keySet(): 获取所有键对象的Set集合
Set<String> keySet = map.keySet();
for (String key : keySet) {
//通过键对象获取值对象
String[] value = map.get(key);
System.out.println(key+"="+value[0]);
}
System.out.println("==========");
//3)values(): 获取所有值对象的Collection集合(只能获取值对象,不能获取键对象)
Collection<String[]> values = map.values();
for (String[] value : values) {
System.out.println(value[0]);
}
*/
String[] hobits = request.getParameterValues("hobit"); //根据参数名称获取多个参数值
for (String h : hobits) {
System.out.print(h+",");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 获取post提交的参数(实体内容中)
*/
/*ServletInputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while( (len=in.read(buf))!=-1 ){
String str = new String(buf,0,len);
System.out.print(str);
} */
//遍历所有的参数
/*Enumeration<String> enums = request.getParameterNames();//获取所有参数名称列表
while(enums.hasMoreElements()){
String paramName = enums.nextElement();
String paramValue = request.getParameter(paramName);
System.out.println(paramName+"="+paramValue);
}*/
//在doPost方法中调用doGet里面的逻辑代码
doGet(request,response);
}
}
http协议之request案例三:获取表单参数
最新推荐文章于 2024-06-28 21:55:38 发布