1、在瀏覽器中輸入http://localhost:8080/Struts2Demo/hello,就會向服務(wù)器端(tomcat)發(fā)送一個請求
2、tomcat會解析URL预伺,從中找到一個webApplication(可理解為即項目名)為Struts2Demo,然后就會在這個項目里面找到web.xml文件
3、在web.xml中找到filter標(biāo)簽酬诀,然后在filter中定義的filter-class處理URL中的hello(這其中其實還包含一個步驟脏嚷,就是web.xml中<url-pattern>/*</url-pattern>會過濾掉所有地址,這樣地址才會被filter-class中定義的類接收到)
4料滥、StrutsPrepareAndExecuteFilter接收到地址之后,首先查詢namespace(在struts.xml中的package標(biāo)簽中的namespace中得到它的值)艾船,然后將URL中namespace值(這里是/)后面的路徑讀取到(這里是hello)
5葵腹、繼續(xù)在struts的action標(biāo)簽中查找是否有hello這個值的,如果有且發(fā)現(xiàn)action中有class屬性屿岂,則會new一個class中聲明的類践宴,執(zhí)行里面的一個execute()方法,該方法返回一個String字符串爷怀,返回該字符串之后才能得到result中的值阻肩,如果action中沒有class屬性,則默認有一個ActionSupport類运授,該類中也有一個execute方法烤惊,返回一個String值
6、上一步中講到execute()方法吁朦,但是不一定非要執(zhí)行execute()方法柒室,當(dāng)action標(biāo)簽中有method屬性時,就會執(zhí)行該屬性定義的方法名稱逗宜,然后同樣會返回一個String字符串
7雄右、根據(jù)返回的String字符串(success),在result中找到name屬性值為返回的String字符串的標(biāo)簽(這里就是Action.jsp)纺讲,如果沒有找到擂仍,則會返回error頁面;如果action中沒有class則直接找到該action下面的result中的值(這里是/Hello.jsp)熬甚,然后將請求forword到Action.jsp/Hello.jsp
8逢渔、最后jsp反饋到客戶端。
引自https://www.cnblogs.com/printN/p/6434526.html
疑問:
- tomcat如何找到webApplication乡括?