我是Java Enterprise和Spring的新手,但對標準Java有很強的把握。我正在瀏覽一個現有的Web應用程序項目。該項目使用Tomcat/Spring/Hibernate,據我瞭解這是相當普遍的。它還使用DWR進行遠程方法調用。我發現將責任分開有點困難:Tomcat負責什麼,Spring負責什麼,請求如何從一個到另一個,以及Spring的主要部分如何組合在一起。我已經閱讀了大量關於Spring的文檔,特別是關於bean和bean的工廠,我仍然在閱讀更多內容。任何建議你們都會受到歡迎,但我會提供一些具體問題。有人可以解釋Spring web.xml文件嗎?
問題1:web.xml適用於哪些內容(何時使用/調用,以及從哪裏調用)?
代碼示例1:
<servlet>
<servlet-name>qrst</servlet-name>
<display-name>qrst Servlet</display-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
是什麼上面的代碼做(或者,這是什麼導致發生)?在我的web應用程序的某個時候,qrst.jsp被使用;它是使用servlet名稱調用qrst.jsp的DispatcherServlet嗎?否則,servlet名稱的意義是什麼?什麼是啓動時的負載?
代碼示例2:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/someLocation/some-servlet.xml
</param-value>
</context-param>
鏈接或以上做什麼解釋?從查看包含bean定義的XML文件中我可以看到,我確實瞭解了哪些bean以及它們是如何使用的,但我不知道有關此的任何其他詳細信息,並且希望這樣做。
代碼示例3:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR</display-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>classes</param-name>
<param-value>
somepackage.someclass
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
從我瞭解豆類,我相信那些INIT-param元素是獲得servlet的java類僅有的參數。 servlet名稱的意義是什麼,啓動時的負載如何? Web應用程序以某種方式「知道」什麼時候發生AJAX(dwr)調用,而不是第一次加載Web應用程序時(第一次加載應該使用qrst.jsp時)。它如何知道這一點?它如何決定將請求路由到DWR而不是qrst.jsp?它在哪裏做?
謝謝。
非常感謝您的幫助。我確實爲qrst和dwr-invoker定義了一個servlet映射,所以你說的話對我來說是有意義的!但是,瀏覽器地址欄中的URL總是看起來相同:它總是會調用第一個servlet。在提出請求之前,dwr可以在JavaScript代碼中設置URL嗎?我已經找到了這一點,但沒有看到這樣的事情,如果我在正確的軌道上,我會繼續尋找。 – KyleM 2011-04-29 21:43:18
在some-servlet.xml中,有兩個元素的屬性「class」包含「Controller」。一個是主要的,另一個是DWR!因此,似乎DispatcherServlet可能只是選擇合適的一個來調用,這聽起來合理嗎?我現在必須回家,但我會在星期一儘快查看你的鏈接。感謝百萬人的幫助,我真的不能告訴你我多麼感激。 – KyleM 2011-04-29 21:49:17
再次感謝所有的幫助,我無法告訴你我多麼感激,我已經能夠根據你的優秀帖子研究適當的主題。 @Everyone - 使用HttpFox顯示「/ dwr」是在執行ajax調用時發佈的URL的一部分。萊昂內爾關於servlet映射的說法很明顯。現在它只是找出如何將網址發佈到哪裏(因爲我沒有看到它在哪裏設置...)。我正在用一些有用的文檔更新原始問題。 – KyleM 2011-05-02 13:59:23