<body> This is my HTML page. <br> <h3>get </h3> <form action="/day1/requestdemo2" method="GET"> 用戶名:<input type"text" name="name"/><br/> 密碼:<input type="password" name="password"/><br/> <input type="submit" value="提交"> </form> <h3>Post </h3> <form action="/day1/requestdemo2" method="POST"> 用戶名:<input type"text" name="name"/><br/> 密碼:<input type="password" name="password"/><br/> <input type="submit" value="提交"> </form> </body>
不推薦的辦法:
public class requestdemo2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("get:"); String value=request.getQueryString(); System.out.println(value); } 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())!=-1){ String str= new String(buf,0,len); System.out.println(str); } }
推薦方式:
doget(),dopost()通用,獲取數據方式
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 paraname=enums.nextElement(); String paravalue=request.getParameter(paraname); System.out.println(paraname+"="+paravalue); }
傳遞的請求參數如何獲取
GET方式: 參數放在URI后面
POST方式: 參數放在實體內容中
獲取GET方式參數:
request.getQueryString();
獲取POST方式參數:
request.getInputStream();
問題:但是以上兩種不通用,而且獲取到的參數還需要進一步地解析。
所以可以使用統一方便的獲取參數的方式:
核心的API:
request.getParameter("參數名"); 根據參數名獲取參數值(注意,只能獲取一個值的參數)
request.getParameterValue("參數名“);根據參數名獲取參數值(可以獲取多個值的參數)
request.getParameterNames(); 獲取所有參數名稱列表