4 Servlet 表單數(shù)據(jù)

很多情況下啃洋,需要傳遞一些信息传货,從瀏覽器到 Web 服務(wù)器,最終到后臺程序宏娄。瀏覽器使用兩種方法可將這些信息傳遞到 Web 服務(wù)器问裕,分別為 GET 方法和 POST 方法。

使用 Servlet 讀取表單數(shù)據(jù)

Servlet 處理表單數(shù)據(jù)孵坚,這些數(shù)據(jù)會根據(jù)不同的情況使用不同的方法自動解析:

  • getParameter():您可以調(diào)用 request.getParameter() 方法來獲取表單參數(shù)的值粮宛。
  • getParameterValues():如果參數(shù)出現(xiàn)一次以上,則調(diào)用該方法卖宠,并返回多個值巍杈,例如復(fù)選框。
  • getParameterNames():如果您想要得到當前請求中的所有參數(shù)的完整列表扛伍,則調(diào)用該方法筷畦。

GET 方法
GET 方法向頁面請求發(fā)送已編碼的用戶信息。頁面和已編碼的信息中間用 ? 字符分隔刺洒,如下所示:

http://localhost:8080/test/servlet/TestGet?param1=1&param2=2&param3=3

GET 方法是默認的從瀏覽器向 Web 服務(wù)器傳遞信息的方法鳖宾,它會產(chǎn)生一個很長的字符串亚斋,出現(xiàn)在瀏覽器的地址欄中。如果您要向服務(wù)器傳遞的是密碼或其他的敏感信息攘滩,請不要使用 GET 方法帅刊。GET 方法有大小限制:請求字符串中最多只能有 1024 個字符。
這些信息使用 QUERY_STRING 頭傳遞漂问,并可以通過 QUERY_STRING 環(huán)境變量訪問赖瞒,Servlet 使用 doGet() 方法處理這種類型的請求。

測試GET(這里我用的命令行操作Tomcat,所以java文件編譯完成后,應(yīng)將class文件放入Tomcat下的webapp中對應(yīng)的目錄,具體細節(jié)參考3 Servlet部署與實例)

在web.xml文件中加入

    <!-- 測試GET -->
    <servlet>
        <servlet-name>TestGet</servlet-name>
        <servlet-class>GetPost.TestGet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestGet</servlet-name>
        <url-pattern>/servlet/TestGet</url-pattern>
    </servlet-mapping>

TestGet.html

<form id="form1" name="form1" method="get" action="servlet/TestGet">
    <table width="343" border="1">
        <tr>
            <td width="92">param1</td>
            <td width="92">
                <input name="param1" type="text" id="param1">
            </td>
        </tr>

        <tr>
            <td>param2</td>
            <td>
                <label>
                    <input name="param2" type="text" id="param2">
                </label>
            </td>
        </tr>

        <tr>
            <td width="92">param3</td>
            <td><input name="param3" type="text" id="param3"></td>
        </tr>

        <tr>
            <td> </td>
            <td>
                <label>
                    <input type="submit" value="提交">
                </label>
            </td>
        </tr>           
    </table>
</form>

TestGet.java


package GetPost;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class TestGet extends HttpServlet {
    
    //request封裝了客戶端向服務(wù)器端的請求,包括所有的參數(shù)
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter pw = response.getWriter();
        
        System.out.println("ThreeParams.doGet()");
        
        //request.getParameter(String args); 根據(jù)args獲取傳入的值
        pw.println(request.getParameter("param1"));
        pw.println("<br/>");
        pw.println(request.getParameter("param2"));
        pw.println("<br/>");
        pw.println(request.getParameter("param3"));
        pw.println("<br/>");
        
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
//      PrintWriter pw = response.getWriter();
//      
//      //request.getParameter(String args); 根據(jù)args獲取傳入的值
//      pw.println(request.getParameter("param1"));
//      pw.println("<br/>");
//      pw.println(request.getParameter("param2"));
//      pw.println("<br/>");
//      pw.println(request.getParameter("param3"));
//      pw.println("<br/>");
        
        System.out.println("doPost()");
        //如果Post方法與Get方法實現(xiàn)的效果一直,可直接傳參
        doGet(request,response);
    }
}

提交前


Paste_Image.png

提交后


Paste_Image.png
測試POST(這里我用的命令行操作Tomcat,所以java文件編譯完成后,應(yīng)將class文件放入Tomcat下的webapp中對應(yīng)的目錄,具體細節(jié)參考3 Servlet部署與實例)
  • TestPost.html
<form id="form1" name="form1" method="post" action="servlet/TestPost">
    <table width="343" border="1">
        <tr>
            <td width="92">param1</td>
            <td width="92">
                <input name="param1" type="text" id="param1">
            </td>
        </tr>

        <tr>
            <td>param2</td>
            <td>
                <label>
                    <input name="param2" type="text" id="param2">
                </label>
            </td>
        </tr>

        <tr>
            <td width="92">param3</td>
            <td><input name="param3" type="text" id="param3"></td>
        </tr>

        <tr>
            <td> </td>
            <td>
                <label>
                    <input type="submit" value="提交">
                </label>
            </td>
        </tr>           
    </table>
</form>

TestPost.java

package GetPost;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class TestPost extends HttpServlet {
    
    //request封裝了客戶端向服務(wù)器端的請求,包括所有的參數(shù)
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter pw = response.getWriter();
        
        System.out.println("ThreeParams.doGet()");
        
        //request.getParameter(String args); 根據(jù)args獲取傳入的值
        pw.println(request.getParameter("param1"));
        pw.println("<br/>");
        pw.println(request.getParameter("param2"));
        pw.println("<br/>");
        pw.println(request.getParameter("param3"));
        pw.println("<br/>");
        
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
//      PrintWriter pw = response.getWriter();
//      
//      //request.getParameter(String args); 根據(jù)args獲取傳入的值
//      pw.println(request.getParameter("param1"));
//      pw.println("<br/>");
//      pw.println(request.getParameter("param2"));
//      pw.println("<br/>");
//      pw.println(request.getParameter("param3"));
//      pw.println("<br/>");
        
        System.out.println("doPost()");
        //如果Post方法與Get方法實現(xiàn)的效果一直,可直接傳參
        doGet(request,response);
    }
}

在web.xml中加入

<!--  測試POST -->
    <servlet>
        <servlet-name>TestPost</servlet-name>
        <servlet-class>GetPost.TestPost</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestPost</servlet-name>
        <url-pattern>/servlet/TestPost</url-pattern>
    </servlet-mapping>

提交前


Paste_Image.png

提交后

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚤假,一起剝皮案震驚了整個濱河市栏饮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷仰,老刑警劉巖袍嬉,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灶平,居然都是意外死亡伺通,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門逢享,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罐监,“玉大人,你說我怎么就攤上這事瞒爬」” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵侧但,是天一觀的道長矢空。 經(jīng)常有香客問我,道長禀横,這世上最難降的妖魔是什么屁药? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮燕侠,結(jié)果婚禮上者祖,老公的妹妹穿的比我還像新娘。我一直安慰自己绢彤,他們只是感情好七问,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茫舶,像睡著了一般械巡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天讥耗,我揣著相機與錄音有勾,去河邊找鬼。 笑死古程,一個胖子當著我的面吹牛蔼卡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挣磨,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雇逞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茁裙?” 一聲冷哼從身側(cè)響起塘砸,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晤锥,沒想到半個月后掉蔬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡矾瘾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年女轿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霜威。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡谈喳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戈泼,到底是詐尸還是另有隱情,我是刑警寧澤赏僧,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布大猛,位于F島的核電站,受9級特大地震影響淀零,放射性物質(zhì)發(fā)生泄漏挽绩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一驾中、第九天 我趴在偏房一處隱蔽的房頂上張望唉堪。 院中可真熱鬧,春花似錦肩民、人聲如沸唠亚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灶搜。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間割卖,已是汗流浹背前酿。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鹏溯,地道東北人罢维。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像丙挽,于是被迫代替她去往敵國和親肺孵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理取试,服務(wù)發(fā)現(xiàn)悬槽,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 從三月份找實習到現(xiàn)在瞬浓,面了一些公司初婆,掛了不少,但最終還是拿到小米猿棉、百度磅叛、阿里、京東萨赁、新浪弊琴、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,240評論 11 349
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法杖爽,類相關(guān)的語法敲董,內(nèi)部類的語法,繼承相關(guān)的語法慰安,異常的語法腋寨,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • 是不是無論兩個人當時玩的多么好是不是經(jīng)過一段時間的不聯(lián)系就會關(guān)系變淡,又或者從來就不會有兩個人玩的會毫無保留化焕,總會...
    不笨的go閱讀 131評論 0 0
  • 周五回學校給導(dǎo)師送日歷萄窜,恰巧碰上導(dǎo)師要給下一屆學弟學妹們輔導(dǎo)畢業(yè)論文,準確地來說是開題報告撒桨,因為月底要開題答辯了查刻。...
    ylm打不死的美麗閱讀 23,663評論 4 9