隨筆-42  評論-42  文章-0  trackbacks-0
                 一 Servlet 與 JSP

             Servlet是Java技術(shù)對CGI編程的回答。Servlet程序在服務(wù)器端運行,動態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其他類似CGI的技術(shù)相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節(jié)省投資。
            
             高效

               在傳統(tǒng)的CGI(Common Gateway Interface:公共網(wǎng)關(guān)接口)中,每個請求都要啟動一個新的進程,如果CGI程序本身的執(zhí)行時間較短,啟動進程所需要的開銷很可能反而超過實際執(zhí)行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統(tǒng)進程)。
          在傳統(tǒng)CGI中,如果有N個并發(fā)的對同一CGI程序的請求,則該CGI程序的代碼在內(nèi)存中重復(fù)裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計算結(jié)果,保持數(shù)據(jù)庫連接的活動,等等。

              方便

               Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數(shù)據(jù)、讀取和設(shè)置HTTP頭、處理Cookie、跟蹤會話狀態(tài)等。

               功能強大

          在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務(wù)都可以輕松地完成。例如,Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實現(xiàn)。

              可移植性好

               Servlet用Java編寫,Servlet API具有完善的標準。因此,為I-Planet Enterprise Server寫的Servlet無需任何實質(zhì)上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務(wù)器都直接或通過插件支持Servlet。

              節(jié)省投資

              不僅有許多廉價甚至免費的Web服務(wù)器可供個人或小規(guī)模網(wǎng)站使用,而且對于現(xiàn)有的服務(wù)器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。

           
          JavaServer Pages(JSP)是一種實現(xiàn)普通靜態(tài)HTML和動態(tài)HTML混合編碼的技術(shù)。
          posted on 2008-06-24 17:28 BlueSunshine 閱讀(243) 評論(4)  編輯  收藏 所屬分類: 學(xué)習心得

          評論:
          # re: 學(xué)習 JSP 2008-06-24 17:33 | BlueSunshine
          二 支持Servlet的Web服務(wù)器--tomcat

          三 一個簡單Servlet的基本結(jié)構(gòu)

          package servlet;

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

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

          public class SomeServlet extends HttpServlet 
          {
              
          public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException 
          {
                  PrintWriter out 
          =
           resp.getWriter();
              }

          }


             如果某個類要成為Servlet,則它應(yīng)該從HttpServlet 繼承,根據(jù)數(shù)據(jù)是通過GET還是POST發(fā)送,覆蓋doGet、doPost方法之一或全部。doGet和doPost方法都有兩個參數(shù),分別為HttpServletRequest 類型和HttpServletResponse 類型。HttpServletRequest提供訪問有關(guān)請求的信息的方法,例如表單數(shù)據(jù)、HTTP請求頭等等。HttpServletResponse除了提供用于指定HTTP應(yīng)答狀態(tài)(200,404等)、應(yīng)答頭(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一個用于向客戶端發(fā)送數(shù)據(jù)的PrintWriter 。對于簡單的Servlet來說,它的大部分工作是通過println語句生成向客戶端發(fā)送的頁面。

             注意doGet和doPost拋出兩個異常,因此你必須在聲明中包含它們。另外,你還必須導(dǎo)入java.io包(要用到PrintWriter等類)、javax.servlet包(要用到HttpServlet等類)以及javax.servlet.http包(要用到HttpServletRequest類和HttpServletResponse類)。

              最后,doGet和doPost這兩個方法是由service方法調(diào)用的,有時你可能需要直接覆蓋service方法,比如Servlet要處理GET和POST兩種請求時。
            回復(fù)  更多評論
            
          # re: 學(xué)習 JSP--基礎(chǔ)篇 2008-06-25 12:51 | BlueSunshine

          四 處理表單數(shù)據(jù)

            Java Servlet的好處之一,只需要簡單地調(diào)用一下HttpServletRequest的getParameter方法、在調(diào)用參數(shù)中提供表單變量的名字(大小寫敏感)即可,而且GET請求和POST請求的處理方法完全相同。

             getParameter方法的返回值是一個字符串,它是參數(shù)中指定的變量名字第一次出現(xiàn)所對應(yīng)的值經(jīng)反編碼得到得字符串(可以直接使用)。如果指定的表單變量存在,但沒有值,getParameter返回空字符串;如果指定的表單變量不存在,則返回null。如果表單變量可能對應(yīng)多個值,可以用getParameterValues來取代getParameter。getParameterValues能夠返回一個字符串數(shù)組。

             最后,雖然在實際應(yīng)用中Servlet很可能只會用到那些已知名字的表單變量,但在調(diào)試環(huán)境中,獲得完整的表單變量名字列表往往是很有用的,利用getParamerterNames方法可以方便地實現(xiàn)這一點。getParamerterNames返回的是一個Enumeration,其中的每一項都可以轉(zhuǎn)換為調(diào)用getParameter的字符串。

            回復(fù)  更多評論
            
          # re: 學(xué)習 JSP--Servlet 2008-06-25 14:45 | BlueSunshine
          五 Servlet的service方法

            service()可以涵蓋doGet()和doPost()。

          public class SomeServlet extends HttpServlet {
              @Override
              
          protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                  PrintWriter out 
          = resp.getWriter();
              }

          }

           
          這樣寫,就可以不用再寫doGet()和doPost(),因為service()可以處理get請求和post請求。   回復(fù)  更多評論
            
          # re: 學(xué)習 JSP--Servlet 2008-06-25 14:51 | BlueSunshine

          六 Http的一個會話對象Session

          public class SomeServlet extends HttpServlet {
              @Override
              
          protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                  HttpSession session 
          = req.getSession();
                  session.setAttribute(
          "name""chh");
              }

          }
            回復(fù)  更多評論
            
          主站蜘蛛池模板: 甘泉县| 淅川县| 潮安县| 准格尔旗| 祁东县| 花莲县| 库尔勒市| 芒康县| 颍上县| 宝鸡市| 任丘市| 汉寿县| 上思县| 拉孜县| 麻阳| 手游| 辽宁省| 怀宁县| 平泉县| 格尔木市| 察隅县| 四川省| 高青县| 甘南县| 西贡区| 宁蒗| 灵川县| 新巴尔虎左旗| 柳江县| 云林县| 宁海县| 隆德县| 宁波市| 偏关县| 彭山县| 股票| 连州市| 前郭尔| 塔城市| 五原县| 武邑县|