Servlet學習
1.servlet映射<servlet-mapping>
<servlet-name>MyName</servlet-name>
<url-pattern>/hello.html<url-pattern>
</servlet-mapping>
其中,url也可以使用通配符,但是只有兩種形式:
1)*.擴展名
2)正斜杠"/"開頭,并以"/*結尾"
例如:指定/action/*.xx,在地址欄中輸入/action/test.xx是無法匹配的,因為/action/*.xx是一個無效的映射路徑。
2.servlet激活器
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*<url-pattern>
</servlet-mapping>
這段內容說明,當訪問應用程序下面任何以/servlet/開頭的程序時,都會去調用一個注冊名為invoker的servlet。
這個注冊名為invoker的servlet,在tomcat主目錄/conf目錄下的web.xml中有定義,
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
其中load-on-startup設定為隨tomcat啟動而加載,
而invoker這個servlet的作用就是去激活和調用任何其他的Servlet,故被稱為Servlet激活器。
3.servlet的加載
1)當接到某個servlet的請求時,servlet引擎會檢查是否已經創建了該servlet的實例對象,如果已經創建了,直接到第4步,否則第2步。
2)創建并裝載Servlet的一個實例對象
3)調用servlet的init()方法,執行Servlet的一些初始化工作
4)創建一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然后調用servlet的service()方法,將這兩個對象傳遞進去
5)在一個Web應用程序被停止或者重新啟動之前,servlet引擎將卸載其中運行的servlet。在卸載之前,調用servlet的destory()方法,執行servlet的一些清理工作。
如果對某個已經裝載的servlet做了修改,除非重新啟動服務器,否則內存中運行的仍舊是舊的servlet代碼。
tomcat服務器可以設置,當servlet被修改后,是否自動裝載,tomcat主目錄/conf/server.xml中的Context元素中的reloadable屬性,默認為false,就是不自動加載修改的servlet。設定為true,會自動裝載。當開發時,可以設定為true,提高開發效率,生產環境中再設定為false,減輕服務器負擔。
posted on 2007-10-21 22:16 baim 閱讀(373) 評論(0) 編輯 收藏 所屬分類: Java