ActionServlet類
ActionServlet 類對應的類名為org.apche.struts.action.ActionServlet,它是struts框架的核心控制器組件,所有用戶的請求都先由ActionServlet來處理,然后再由ActionServlet把請求轉發給其他組件。
Struts只允許一個應用中配置一個 ActionServlet,但是可以將ActionServlet擴展。
Servlet容器在啟動時,或者用戶首次請求ActionServlet時加載ActionServlet類,在上述情況下,Servlet容器都會在ActionServlet被加載后立即執行它的init()方法。Init()過程如下:
1.調用initInternal()方法,初始化struts框架內在的消息資源,如與系統日志相關的通知、警告和錯誤信息。
2.調用initOther(),從web.xml文件中加載ActionServlet的初始化參數,如config
參數
3.調用initServlet(),從web.xml文件中加載ActionServlet的URL映射信息。此外還會注冊web.xml和
struts配置文件所使用的DTD文件,這些DTD文件用來驗證web.xml和struts配置文件的語法
4.調用initModuleConfig(),加載并解析默認子應用模塊的struts配置文件;創建ModuleConfig對象,把它存在ServletContext中
5.調用intiModuleMessageResources(),加載并初始化默認子應用模塊的消息資源,創建
MessageResources對象,把它存在ServletContext中
6.調用initModuleDataSources()方法,加載并初始化默認子應用模塊的數據源。如果沒有在struts配置文件中沒有定義<data-sources>元素,就忽略這一流程
7.調用initModulePlugins(),加載并初始化默認子應用模塊的所有插件
8.當默認子應用模塊被成功初始化后,如果應用還包括其他子應用模塊,將重復流程4-7,分別對其他子應用模塊進行初始化。擴展ActionServlet類,定義如下的類:
public class ExtendedActionServlet extends ActionServlet {
public void init() throws ServletException {
super.init();
//do some operations
……………
}
}
<servlet-name>sample</servlet-name>
<servlet-class>sample.ExtendedActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/action/*<url-pattern>
//上面的/action/*表示負責處理所有以/action為前綴的URL,后面的/表示轉義
<servlet-mapping>
<轉>
posted on 2007-10-11 10:19 月芽兒 閱讀(392) 評論(0) 編輯 收藏 所屬分類: J2EE學習摘錄