創建HttpServlet的步驟

          0人收藏此文章, 我要收藏 發表于3年前(2009-05-31 15:58) , 已有955次閱讀 ,共0個評論

          創建用戶自己的HttpServlet類。通常涉及下列4個步驟

          1. 擴展HttpServlet抽象類
          2. 覆蓋HttpServlet的部分方法,例如覆蓋doGet()和doPost()方法
          3. 獲取HTTP請求信息。例如通過HttpServletRequest對象來檢索HTML表單所提交的數據或URL上的查詢字符串。無論是 HTML表單數據還是URL上的查詢字符串,在HttpServletRequest對象中都以參數名/參數值的形式存放,可以通過以下方法檢索參數信 息:
          •  getParameterNames():  返回一個Enumeration對象。它包含了所有的參數名信息
          •  getParameter(String name): 返回參數名name對應的參數值
          •  getParamaterValues(): 返回一個Enumeration對象,它包含了所有的參數值信息

             4.生成HTTP響應結果。通過HttpServletResponse對象可以生成響應結果。HttpServletResponse對象有一個 getWriter()方法,該方法返回一個PrintWriter對象。使用PrintWriter的print()或println()方法可以向客 戶端發送字符串數據流。

           例子: 提供一個Servlet樣例(HelloServlet.java)

          package com.myServlet

            import  javax.servlet.*;
            import  javax.servlet.http.*;
            import java.io.*;

            public class HelloServlet extends HttpServlet     // 第一步:擴展HttpServlet抽象類
           {

            // 第二步: 覆蓋doGet()方法
             public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException{

           //  第三步: 獲取HTTP請求中的參數信息

             String clientName=request.getParameter("clientName");

             if(clientName!=null)

              clientName=new String(clientName.getBytes("ISO-8859-1"),"GB2312");

          else

           clientName="你好"

           // 第四步

           PrintWriter out;
           String title="HelloServlet";
           String heading1="This is output from HelloServlet by doGet:";
            response.setContentType("text/html;charset=GB2312");

           out=response.getWriter();

          out.print("<HTML><HEAD><TITLE>"+title+"</TITLE>);

           out.print("</HEAD><BODY>")

          out.print(heading1);

          out.println("<h1><P>"+clientName+":你好</h1>"+);

          out.print("</BODY></HTML>");

          out.close();

               }

           }

          上述HelloServlet類擴展HttpServlet抽象類,覆蓋了doGet方法。在重寫的doGet方法中,通過 getParameter方法讀取HTTP請求中的一個參數ClientName。在上述代碼中,為了解決漢化問題,做了必要的轉碼工作。客戶提交的查詢 數據采用默認的ISO-8859-1編碼,應該把它轉換為中文編碼GB2312:

            // 字符編碼轉換

             clientName=new String(clientName.getBytes(“ISO-8859-1”),"GB2312");

          // 設置輸出響應數據的字符編碼

           response.setContentType("text/html;charset=GB2312");

          HellowServlet.class 的存放位置為:

           <CATALINA_HOME>/webapps/helloapp/WEB-INF/classes/mypack/HelloServlet.class

          在Web.xml中位HelloServlet類加上如下<servlet>和<servlet-mapping>元素:

           <servlet>

             <servlet-name>HelloServlet</servlet-name>
            <servlet-class>mypackCounterServlet</servlet-class>

          </servlet>

          <servlet-mapping>HelloServlet</servlet-mapping>

          <url-pattern>/hello</url-pattern>

          </servlet-mapping>

          然后通過如下URL訪問HelloServlet:

          posted on 2013-03-14 20:40 姚先進 閱讀(277) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 武宣县| 长岛县| 扶绥县| 安仁县| 道孚县| 慈溪市| 永春县| 黎平县| 侯马市| 义马市| 玉屏| 连江县| 江油市| 石林| 昌黎县| 德惠市| 莒南县| 垫江县| 都江堰市| 班戈县| 荣昌县| 蕉岭县| 老河口市| 平武县| 北票市| 偏关县| 三原县| 安宁市| 南川市| 扬中市| 曲靖市| 安义县| 碌曲县| 鹰潭市| 蓝田县| 泰顺县| 万年县| 远安县| 班戈县| 呼伦贝尔市| 长丰县|