2010-09-19 28 views
14

Trong mùa xuân web MVCChúng ta có thể thay đổi tên tệp cấu hình ngữ cảnh DispatcherServlet không?

1) Nếu chúng ta định nghĩa như sau DispatcherServlet

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 

nó trông cho tập tin có tên appServlet-servlet.xml dưới WEB-INF thư mục như đã đề cập trong các tài liệu tham khảo mùa xuân.

Câu hỏi của tôi là chúng tôi có thể thay đổi tên này tên tệpvị trí tìm kiếm? (? Tôi nghĩ rằng sử dụng bối cảnh hoặc các thông số init chúng ta có thể làm được điều này, bất kỳ cơ thể có thể cho tôi biết chính xác những gì nó phải)

2) Trong mọi MVC web mùa xuân web.xml, chúng ta sẽ có dòng dưới đây:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Ở đây, Câu hỏi của tôi là những tập tin ngữ cảnh mà nó tìm kiếm? (là trình lắng nghe trình tải ngữ cảnh này có tìm kiếm dispatcherservlet-servlet.xml không?)

3) Sự khác biệt giữa dispatcherservlet-servlet.xmlapplicationcontext.xml? (Tôi thấy một số người examples..where đang nhập khẩu applicationcontext.xml vào dispatcherservlet-servlet.xml?)

4) Xin cho biết có bao nhiêu bối cảnh chúng ta có thể có cho web mùa xuân và được có bất kỳ quy ước đặt tên cho điều này (như servlet dispatcher)?/

+0

Tôi hy vọng liên kết bên dưới sẽ có thể trả lời câu hỏi của bạn. http://stackoverflow.com/questions/11815339/role-purpose-of-contextloaderlistener-in-spring – user2292029

Trả lời

19
  1. "Không gian tên cũng có thể được đặt rõ ràng thông qua namespace init-param servlet." Bạn có thể đặt bất cứ con đường bạn muốn ở đó, liên quan đến gốc bối cảnh

  2. Không, ContextLoaderListener tìm kiếm applicationContext.xml (hoặc cho các tập tin được xác định bởi bối cảnh-param contextConfigLocation. Một lần nữa con đường là liên quan đến bối cảnh gốc. Tôi thường đặt mỏ vào /WEB-INF/classes/applicationContext.xml và đặt giá trị này làm giá trị của tham số ngữ cảnh).

  3. dispatcherServlet-servlet.xml là ngữ cảnh con với ngữ cảnh được xác định bởi applicationContext.xml. Ngữ cảnh con có thể truy cập các bean từ ngữ cảnh gốc, nhưng ngược lại không đúng. Vì vậy, hãy tưởng tượng bạn có ngữ cảnh "web", với tất cả các bộ điều khiển và nội dung liên quan đến web và ngữ cảnh "chính" với mọi thứ khác

  4. Bạn nên có ít bối cảnh nhất có thể (để đơn giản) . Nhưng bạn có thể định nghĩa nhiều servatcher dispatcher, và do đó có nhiều ngữ cảnh "con".

+0

Bozho, Cảm ơn bạn đã trả lời ... Tôi vẫn chưa rõ ràng với hai câu trả lời đầu tiên. (1) Câu hỏi đặt ra là tên của tệp ngữ cảnh servlet dispatcher và đường dẫn mà nó tìm kiếm. Theo mặc định, tập tin phải là ' .xml' và phải nằm trong thư mục' WEB-INF', chúng ta có thể thay đổi các quy tắc này bằng cách sử dụng init param không? (2) vì vậy nó tìm kiếm 'applicationcontext.xml', bạn có thể mô tả về đường dẫn không? – javanoob

+0

@javanoob - xem cập nhật. bạn có thể đặt đường dẫn liên quan đến gốc ngữ cảnh. – Bozho

+0

** ContextLoaderListener ** chấp nhận cú pháp 'classpath:/path/to/spring.xml' cho ** contextConfigLocation **. – gavenkoa

14

Câu hỏi của tôi là chúng tôi có thể thay đổi tên và vị trí của tệp này?

Ý của bạn là bạn muốn sử dụng một tập tin mà không phải là đặt tên như appServlet.xml

sao chép-dán từ mvc-shocase/web.xml

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
+0

Xin chào, Cảm ơn bạn đã trả lời .. Câu hỏi đặt ra là chúng tôi có thể thay đổi tên từ 'appServlet-servlet.xml' (bạn đã đề cập đến nó như' appServlet.xml') BTW..làm sao bạn biết rằng tôi đã đề cập đến điều đó ví dụ (mv-showcase) :)? – javanoob

0

1A) Vâng, nhưng chúng tôi cần phải vượt qua init- param cho DispatcherServlet với tên và giá trị là "contextConfigLocation" và "vị trí của tệp ur" tương ứng trong DD hoặc web.tệp xml.

2A) Bozho đã trả lời. Nó [ContextLoaderListener] sẽ tải các tệp xml ngữ cảnh được cung cấp dưới dạng giá trị param-context được ánh xạ tới tên param-context cho context-param. Tìm "dispatcherservlet-servlet.xml" là một tiến trình mặc định trong Spring MVC. ContextLoaderListener không tìm kiếm nó.

3A) Bozho đã trả lời.

4A) Bozho đã trả lời.

Các vấn đề liên quan