GET方式和POST方式获取表单数据举例2(统一方式获取)

传递的请求参数如何获取

GET方式:参数放在URI后面

POST方式:参数放在实体内容中

 

获取GET方式参数:

request.getQueryString();

获取POST方式参数:

request.getInputStream();

问题:但是以上两种不通用,而且获取的参数需要进行进一步的解析。所以可以使用统一方便的获取参数方式:

核心的API:

request.getParameter(“参数名”);根据参数名获取参数值(注意,只能获取一个值得参数)

request.getParameterValues(“参数名”);根据参数名获取参数值(可以获取多个值的参数)

request.getParameterNames();获取所有参数名称列表

html文件:testParam.html

<!DOCTYPE html>
<html>
  <head>
    <title>请求参数传递和接收的问题</title>
	
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
  	<h3>GET请求</h3>
  	<form action="/day08_web/Demo_Request2" method="GET">
	  	用户名:<input type="text" name="name"/></br>
	  	密码:<input type="password" name="password"></br>
	  	<input type="submit" value="提交"/>
	  	<br/>
	  	性别:
	  	<input type="radio" name="gender" value="male"/>男
	  	<input type="radio" name="gender" value="female"/>女
	  	<br/>
	  	
	  	籍贯:
	  	<select name="jiguan">
	  		<option value="gd">广东</option>
	  		<option value="gx">广西</option>
	  		<option value="hn">湖南</option>
	  	</select>
	  	<br/>
	  	
	  	爱好:
	  	<input type="checkbox" name="hobit" value="lq"/>篮球
	  	<input type="checkbox" name="hobit" value="zq"/>足球
	  	<input type="checkbox" name="hobit" value="ymq"/>羽毛球
	  	<br/>
	  	
	  	个人简介:
	  	<textarea rows="5" cols="10" name="info"></textarea>
	  	<br/>
	  	
	  	<!-- 隐藏域 -->
	  	<input type="hidden" name="id" value="001">
	  	<br/>
	  	
	  	<input type="submit" value="提交">
	</form>
	<hr/>
	<h3>POST请求</h3>
  	<form action="/day08_web/Demo_Request2" method="POST">
	  	用户名:<input type="text" name="name"/></br>
	  	密码:<input type="text" name="password"></br>
	  	<input type="submit" value="提交"/>
	  	<br/>
	  	
	  	性别:
	  	<input type="radio" name="gender" value="male"/>男
	  	<input type="radio" name="gender" value="female"/>女
	  	<br/>
	  	
	  	籍贯:
	  	<select name="jiguan">
	  		<option value="gd">广东</option>
	  		<option value="gx">广西</option>
	  		<option value="hn">湖南</option>
	  	</select>
	  	<br/>
	  	
	  	爱好:
	  	<input type="checkbox" name="hobit" value="lq"/>篮球
	  	<input type="checkbox" name="hobit" value="zq"/>足球
	  	<input type="checkbox" name="hobit" value="ymq"/>羽毛球
	  	<br/>
	  	
	  	个人简介:
	  	<textarea rows="5" cols="10" name="info"></textarea>
	  	<br/>
	  	
	  	<!-- 隐藏域 -->
	  	<input type="hidden" name="id" value="001">
	  	<br/>
	  	
	  	<input type="submit" value="提交">
	</form>
  </body>
</html>

主程序:Demo_Request2.java

package Request;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
 * 获取GET方式和POST方式提交的参数
 */
public class Demo_Request2 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		System.out.println("GET方式提交");
//		//接收GET方式提交的参数
//		String value = request.getQueryString();
//		System.out.println(value);
		/*
		 * 统一方便的获取请求参数方法
		 */
		System.out.println(request.getMethod()+"方式获取数据");
		//根据参数名得到参数值(只能获取一个值得参数)
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		System.out.println(name+"---"+password);
		System.out.println("=================================================");
		//获取全部的参数名和参数值
		Enumeration<String> enums = request.getParameterNames();
		while(enums.hasMoreElements()) {
			String paramName = enums.nextElement();
			if("hobit".equals(paramName)) {
				/*
				 * 根据参数名获取参数值(但是可以获取多个值)
				 */
				String[] hobits = request.getParameterValues("hobit");
				for(String h : hobits) {
					System.out.println(paramName+"---"+h+", ");
				} 
			} else {
				String paramValue = request.getParameter(paramName);
				System.out.println(paramName+"---"+paramValue);
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		System.out.println("POST方式提交");
//		InputStream in = request.getInputStream();
//		byte[] buf = new byte[1024];
//		int len = 0;
//		while((len = in.read(buf)) != -1) {
//			System.out.println(new String(buf,0,len));
//		}
		
//		System.out.println(request.getMethod()+"方式获取数据");
//		//根据参数名得到参数值
//		String name = request.getParameter("name");
//		String password = request.getParameter("password");
//		System.out.println(name+"---"+password);
//		//获取全部的参数名和参数值
//		Enumeration<String> enums = request.getParameterNames();
//		while(enums.hasMoreElements()) {
//			String paramName = enums.nextElement();
//			String paramValue = request.getParameter(paramName);
//			System.out.println(paramName+"---"+paramValue);
//		}
		
		//一定调用doGet方法
		this.doGet(request, response);
	}
}