<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    servlet 學習筆記

    自序

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

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

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

     

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

     

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

     

    <!--[if !supportLists]--> 2.       <!--[endif]--> servletapplet區別?

     

    相同點:

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

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

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

    不同點:

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

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

     

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

     

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

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

     

    先說下環境變量,要編譯 servlet 需要把必要的 jar 設置到 classpath 中。我的環境變量是這樣設置的。(這里我把 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();           

     

       }

    }

    由于設置了環境變量,這里順利編譯通過。

     

    部署 servlet

    webapps 目錄下,建立一個目錄(存儲該應用)。如: 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的初始參數;

    <!--[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]--> 地區和編碼映射;

    <!--[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 。相應的我們就應該覆蓋 HttpServlet 中的 doGet ()、 doPost ()方法。表單中 action servlet url-/pattern 值。

     

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

     

    提示一旦修改過 servlet 就應該重啟 tomcat

     

     

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


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

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

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

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

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914374
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 青春禁区视频在线观看直播免费| 免费不卡中文字幕在线| 国产精品亚洲AV三区| 亚洲?V无码成人精品区日韩 | 亚洲欧洲自拍拍偷精品 美利坚| 国产一区二区三区亚洲综合| 亚洲色自偷自拍另类小说| 69视频在线观看免费| 亚洲精品无码日韩国产不卡av| 特级淫片国产免费高清视频| 97在线免费视频| 亚洲ts人妖网站| 国产亚洲精品无码拍拍拍色欲| 91禁漫免费进入| 久久一区二区免费播放| 亚洲欧洲自拍拍偷综合| 免费国产a国产片高清网站| 高清永久免费观看| 色偷偷女男人的天堂亚洲网| 国产亚洲精品a在线观看| 全免费毛片在线播放| h视频在线免费观看| 亚洲av无码一区二区三区观看| 亚洲av无码国产精品色在线看不卡| 人妻在线日韩免费视频| 2020国产精品亚洲综合网| 国产AV无码专区亚洲AV毛网站| 成人免费午夜无码视频| 91av免费在线视频| 亚洲AV性色在线观看| 亚洲精品美女在线观看| 亚洲人成无码久久电影网站| 成人黄色免费网站| 免费在线观看一级片| 欧亚一级毛片免费看| 亚洲国产精品日韩在线观看| 亚洲中文字幕伊人久久无码| 欧亚精品一区三区免费| 无码av免费网站| 巨胸喷奶水视频www免费视频| 亚洲色偷偷色噜噜狠狠99|