來(lái)源:LoveJSP.site在Web程序設(shè)計(jì)中,處理表單提交的數(shù)據(jù)是獲取Web數(shù)據(jù)的主要方法,,我們來(lái)看一看Servlet中是怎樣處理來(lái)自表單的數(shù)據(jù)的。
表單數(shù)據(jù)的提交方法有兩種Post方法和Get方法,當(dāng)使用Post方法時(shí),數(shù)據(jù)由標(biāo)準(zhǔn)的輸入設(shè)備讀入,當(dāng)使用Get方法時(shí),數(shù)據(jù)由CGI變量QUERY_STRING傳遞給表單數(shù)據(jù)處理程序。
Servlet會(huì)自動(dòng)將以上兩種方法得到的數(shù)據(jù)進(jìn)行處理,從而使用戶(hù)只要簡(jiǎn)單的調(diào)用HttpServletRequest的getParameter方法,給出變量名稱(chēng)即可取得該變量的值。需要注意的是,變量的名稱(chēng)是大小寫(xiě)敏感的。對(duì)于Post方法或Get方法提交的數(shù)據(jù),Servlet的處理方法是一樣的。當(dāng)請(qǐng)求的變量不存在時(shí),將會(huì)返回一個(gè)空字符串。如果變量有多個(gè)值,你應(yīng)該調(diào)用getParameterValues,這個(gè)方法將會(huì)返回一個(gè)字符串?dāng)?shù)組。使用getParameterNames可以取得所有變量的名稱(chēng),該方法返回一個(gè)Emumeration方法。
下面讓我們來(lái)看一個(gè)簡(jiǎn)單的例子,下面這個(gè)Servlet讀取表單中指定名稱(chēng)的五個(gè)字段的值。下載這個(gè)例子
//Html file----> postdata.htm 下載本文件getFormData Servlet Example form LoveJSP.com
Demo Page getFormData Servlet Demo Page username: password: Email: Homepage:
//Servlet File getFormData.java 下載本文件
package lovejsp;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
/** Servlet getParameter Ex from Lovejsp.site(http://www.lovejsp.com)*/
public class getFormData extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();String title = "讀取表單數(shù)據(jù)";out.println(LovejspTools.headTitle(title) + //a tools method to show the html code with title"\n" +"" + title + "\n" +"\n" +" username: "+ request.getParameter("username") + "\n" +" password: "+ request.getParameter("password") + "\n" +" Email: "+ request.getParameter("Email") + "\n" +" Homepage: "+ request.getParameter("Homepage") + "\n" +"\n" +"");}}
這個(gè)程序的運(yùn)行結(jié)果如下圖所示:
大家可能注意到了,上面的結(jié)果中Email的值是null,這是因?yàn)樵诒韱沃袥](méi)有這個(gè)字段,表單的email的名稱(chēng)是email。
下面這個(gè)程序是getParameterNames的示例,也是調(diào)試程序的很好的工具,它的功能是顯示所有的表單數(shù)據(jù)。
//Servlet File ShowAllFormData.java 下載本文件
package lovejsp;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;
public class ShowAllFormData extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();String title = "顯示所有的Form變量的值";out.println(""+title+""+"\n" +"" + title + "\n" +"\n" +"\n" +"變量名稱(chēng)變量值");Enumeration paramNames = request.getParameterNames();while(paramNames.hasMoreElements()) {String paramName = (String)paramNames.nextElement();out.println("" + paramName + "\n");String[] paramValues = request.getParameterValues(paramName);if (paramValues.length == 1) {String paramValue = paramValues[0];if (paramValue.length() == 0)out.print("No Value");elseout.print(paramValue);} else {out.println("");for(int i=0; i