servlet 學習筆記

          自序

          昨天心情有些失落。公司從去年底到現(xiàn)在就沒有安排我做個正事,(也沒有我什么事情,研發(fā)部門當產(chǎn)品出來后,還有什么好研發(fā)呢,無非就是修改 BUG ,做些維護)。沒有事情的情況下,被拉著做測試。測試的內(nèi)容也就是 GIS 的客戶端,功能沒有幾個,測試很枯燥,被叫著翻來覆去做同一件事。郁悶的是部門經(jīng)理的座位在我后面,雖然隔了有 4 左右距離,但是他完全能看到我在做什么事情。他批評了我好幾次“該做什么就做什么。叫你做什么就做什么。”不說了,我并不喜歡發(fā)牢騷……

          鑒于工作中的種種因素,我想跳槽,換個環(huán)境。換工作,我是 java 程序員,而目前的工作無非就是寫 UI swing 編程。類似的工作可不那么好找,而且也打算多長點見識。所以決定離開成都去北京找工作,而且找 J2EE 方面的。辭職前我打算做個 JSP 方面的小應(yīng)用、再把 JAVA 好好復(fù)習一遍這樣才對新工作有所準備。

          說做就做吧。先學習 JSP (畢業(yè)前,曾自學過一點點),學習 JSP 前,有必要學習 servlet 。這就有了這一系列學習筆記……

           

          <!--[if !supportLists]--> 1.       <!--[endif]--> 什么是Servlet

           

          Java Servlet java 服務(wù)器小程序)是一個基于 Java 技術(shù)的 Web 組件,運行在服務(wù)器端,由 Servlet 容器所管理,用于生成動態(tài)的內(nèi)容。

           

          <!--[if !supportLists]--> 2.       <!--[endif]--> servletapplet區(qū)別?

           

          相同點:

          <!--[if !supportLists]--> ²        <!--[endif]--> 他們都不是獨立的應(yīng)用程序,都沒有main()方法;

          <!--[if !supportLists]--> ²        <!--[endif]--> 他們都生存在容器中,applet運行在瀏覽器中,servlet運行在servlet容器中。

          <!--[if !supportLists]--> ²        <!--[endif]--> 他們都有生命周期,都有init()和destroy()方法;

          不同點:

          <!--[if !supportLists]--> ²        <!--[endif]--> applet具有圖形界面,運行在客戶端,servlet沒有圖形界面,運行在服務(wù)器端的servlet容器中。

          我寫的 applet 要多點,這樣對比有利于自己更好的掌握 servlet 技術(shù)。

           

          <!--[if !supportLists]--> 3.       <!--[endif]--> hello world

           

          說句廢話:買的書《 JAVA WEB 開發(fā)詳解》,孫鑫編著,感覺講得不好, servlet 簡直就是在介紹 api 手冊。

          我總結(jié)的時候,自然不能這樣。還是介紹個入門例子吧。

           

          先說下環(huán)境變量,要編譯 servlet 需要把必要的 jar 設(shè)置到 classpath 中。我的環(huán)境變量是這樣設(shè)置的。(這里我把 jar 拷貝到了 jdk 目錄下面)

           

          .;D:\jdk\lib\dt.jar;D:\jdk\lib\tools.jar;D:\jdk\jre\lib\rt.jar;D:\jdk\lib\servlet-api.jar;D:\jdk\lib\jsp-api.jar;

           

          第一個程序—— test.java

           

          import javax.servlet.ServletException;

          import java.io.*;

          import javax.servlet.http.*;

           

          public class test extends HttpServlet

          {

             public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException

             {

                 PrintWriter out = resp.getWriter();

                 out.println("hello, world!");

                 out.close();           

           

             }

          }

          由于設(shè)置了環(huán)境變量,這里順利編譯通過。

           

          部署 servlet

          webapps 目錄下,建立一個目錄(存儲該應(yīng)用)。如: hello

          在該 hello 目錄下建立一個特殊目錄 WEB-INF ,注意全大寫。之所以特殊,因為該目錄對客戶端不可見。如果你把 index.html 放到 WEB-INF 目錄下面,然后通過 http://127.0.0.1:8080/hello/WEB-INF/index.html 訪問,這樣是訪問不到的。

          而在 WEB –INF 目錄下:

          建立 classes 目錄來存放編譯好的 class 文件。

                                      建立 lib 目錄來存放運行所需要的其他包。

                                      建立重要的 web.xml 配置文件。

          web.xml 可以包含如下的配置和部署信息:

          <!--[if !supportLists]--> ²        <!--[endif]--> ServletContext的初始參數(shù);

          <!--[if !supportLists]--> ²        <!--[endif]--> Session的配置;

          <!--[if !supportLists]--> ²        <!--[endif]--> Servlet/Jsp的定義;

          <!--[if !supportLists]--> ²        <!--[endif]--> Servlet/Jsp的映射;

          <!--[if !supportLists]--> ²        <!--[endif]--> MIME類型映射;

          <!--[if !supportLists]--> ²        <!--[endif]--> 歡迎文件列表;

          <!--[if !supportLists]--> ²        <!--[endif]--> 錯誤頁面;

          <!--[if !supportLists]--> ²        <!--[endif]--> 安全;

          <!--[if !supportLists]--> ²        <!--[endif]--> 地區(qū)和編碼映射;

          <!--[if !supportLists]--> ²        <!--[endif]--> jsp配置。

          我們編寫的 xml 必須是格式良好的 xml web.xml

          <?xml version =”1.0” encoding=”ISO-8859-1”?>

          <web-app>

          <servlet>

                 <servlet-name>helloworld</servlet-name>

                 <servlet-class>test</servlet-class>

          </servlet>

          <servlet-mapping>

                 <servlet-name>helloworld</servlet-name>

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

          </servlet-mapping>

          </web-app>

           

          這樣輸入:“ http://127.0.0.1:8080/hello/hello “就訪問到了剛才寫的 servlet

          再介紹一種訪問 servlet 方式: telnet 方式

          telnet localhost 8080

          回車,輸入

          GET /hello/hello HTTP/1.1

          Host:localhost

          dos 窗口下將顯示 hello world

           

          如果要用 servlet 處理表單提交的信息,表單提交方式一般情況分 get post 。相應(yīng)的我們就應(yīng)該覆蓋 HttpServlet 中的 doGet ()、 doPost ()方法。表單中 action servlet url-/pattern 值。

           

          值得注意的是: web.xml servlet 2.2 2.3 規(guī)范中都由 DTD 定義,所有有元素間嚴格的順利關(guān)系,而 servlet2.4 規(guī)范中, web.xml 文件改為, xml schema 來定義文檔的結(jié)構(gòu),其中一個好處是元素出現(xiàn)的順序不再有嚴格的限定。如果要兼容低版本的,還是得有嚴格的順序關(guān)系。

           

          提示一旦修改過 servlet 就應(yīng)該重啟 tomcat

           

           

          posted on 2007-03-09 10:48 -274°C 閱讀(2351) 評論(6)  編輯  收藏 所屬分類: JSP


          FeedBack:
          # re: servlet學習筆記(1)
          2007-03-09 11:02 | 壞男孩
          up!  回復(fù)  更多評論
            
          # re: servlet學習筆記(1)
          2007-03-09 11:09 | αβγ
          我是一邊看書,一邊實踐,一邊總結(jié)的。呵呵,白天上班沒有時間學習,只有晚上回去能看下書。打算用比較快的速度把jsp看了,做個小的應(yīng)用。這樣把知識應(yīng)用在實踐中,也便于深刻掌握。做完這一步,再往下走。其實得感謝各位朋友的支持,讓我更愛總結(jié),寫blog促進了學習啊。  回復(fù)  更多評論
            
          # re: servlet學習筆記(1)
          2007-03-09 11:17 | DoubleHeart
          只有這些,你的工作還會不好找
          你應(yīng)該多學一些思想與架構(gòu)的東西  回復(fù)  更多評論
            
          # re: servlet學習筆記(1)
          2007-03-09 11:30 | αβγ
          做完這步,打算學習筐架、架構(gòu)。  回復(fù)  更多評論
            
          # re: servlet學習筆記(1)
          2007-03-09 11:48 | L
          現(xiàn)在java程序員遍地都是,你離開成都來北京要考慮清楚啊。  回復(fù)  更多評論
            
          # re: servlet學習筆記(1)
          2007-03-09 14:05 | BeanSoft
          面試必備題目(雖然不一定常用, 僅用于面試, 面試就是把人搞的都不會然后砍價, 當然您可以講我可以查資料完成, 但是面試的時候就是沒道理的):
          request.getAttribute() 和 request.getParameter() 有何區(qū)別?
          response.sendRedirect() 和 forward() 區(qū)別?
          <%@include file="xxx.jsp"%>
          和 <jsp:include> 區(qū)別?
          List 和 Map 區(qū)別?
          Struts 和 Spring 自動填充表單參數(shù)到 Bean 的大致原理?
          說一下你用的 Spring + Hibernate 的方框圖? 您都用到了哪些部分?

          try {
          Connection conn = ...;
          Statement stmt = ...;
          } catch(Exception ex) {
          }

          這段代碼有什么不足之處?

          HTML 的 form 提交之前如何驗證數(shù)值不為空? 為空的話提示用戶并終止提交?  回復(fù)  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 917238
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 宜宾县| 伽师县| 潼南县| 江津市| 泸溪县| 宁城县| 石河子市| 上犹县| 佛冈县| 景宁| 安吉县| 天全县| 黎平县| 武威市| 理塘县| 石阡县| 三亚市| 万载县| 阿荣旗| 天峻县| 舟曲县| 濮阳县| 合川市| 巴塘县| 舟山市| 定边县| 德州市| 成安县| 威海市| 新巴尔虎右旗| 中西区| 黄山市| 南木林县| 柘城县| 镇巴县| 张家口市| 龙岩市| 大足县| 三穗县| 大竹县| 忻城县|