http协议之request案例三:获取表单参数

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 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 map= request.getParameterMap();
		//遍历map集合 的三种方法
		//   1)entrySet()
		//   2)keySet()
		//   3) values() 	
		/**
		//1)entrySet()方法:获取键值对对象的Set集合
		//    Entry对象中包含一个键对象,和一个值对象
		Set> entryset = map.entrySet();
		for (Entry entry : entrySet) {
			//获取键对象
			String key = entry.getKey();
			//获取值对象(数组的第一个元素就是参数值)
			String[] value = entry.getValue();
			System.out.println(key+"="+value[0]);
		}
		/
		/**
		//2)keySet(): 获取所有键对象的Set集合
		Set 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 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 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)