2011-07-22 21 views
16

Ai đó có thể cho tôi biết, những gì DispatcherType đang làm?DispatcherType của Jetty (và 1000 thứ khác không có giấy tờ)

Dường như là một cấu hình quan trọng.

Việc sử dụng lớp học cũng không giúp ích cho tôi bằng cách chỉ đến những thứ như ServletContextHandler#addFilter, được "ghi lại" bằng các từ khôn ngoan: convenience method to add a filter.


Nói chung, bất kỳ cơ hội để "hiểu" các không có giấy tờ Jetty API mà không mã ví dụ-search-fun hoặc thử-và-không-and-tự hỏi?

Trả lời

13

Đây cũng là một cài đặt trong web.xml; và có lẽ đã tồn tại trong một thời gian.

http://download.oracle.com/docs/cd/B32110_01/web.1013/b28959/filters.htm#BCFIEDGB

Filters Cấu hình cho Forward hoặc Bao gồm tiêu

Phần này cung cấp một vài cấu hình mẫu để có một hành động lọc về phía trước hoặc bao gồm các mục tiêu. Chúng tôi bắt đầu với việc kê khai lọc, tiếp theo là cấu hình lập bản đồ bộ lọc thay thế:

<filter> 
    <filter-name>myfilter</filter-name> 
    <filter-class>mypackage.MyFilter</filter-class> 
</filter> 

Để thực hiện MyFilter để lọc một bao gồm mục tiêu tên includedservlet:

<filter-mapping> 
    <filter-name>myfilter</filter-name> 
    <servlet-name>includedservlet</servlet-name> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

Lưu ý rằng bao gồm() gọi có thể đến từ bất kỳ servlet (hoặc tài nguyên khác) trong ứng dụng. Cũng lưu ý rằng MyFilter sẽ không thực hiện cho một yêu cầu trực tiếp của includeservlet, trừ khi bạn có một phần tử khác với giá trị REQUEST.

Để thực hiện MyFilter để lọc bất kỳ servlet được yêu cầu trực tiếp thông qua một mẫu URL "/ mypath /", hoặc để thực hiện nó để lọc bất kỳ mục tiêu về phía trước mà được gọi thông qua một mẫu URL bắt đầu bằng "/ mypath /":

<filter-mapping> 
    <filter-name>myfilter</filter-name> 
    <url-pattern>/mypath/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

~~~~~~~~~~~~~~~~~~~~~~

Ngoài ra, mặc định là Yêu cầu; đọc phương pháp appliesTo (...) trên trang sau:

http://grepcode.com/file/repo1.maven.org/maven2/org.eclipse.jetty/jetty-servlet/8.0.0.M0/org/eclipse/jetty/servlet/FilterMapping.java#FilterMapping.0_dispatches

+0

Vâng, tôi phải đồng ý, điều đó khiến cho sence, Yêu cầu đó là mặc định;) –

8

Thêm vào câu trả lời của Asad, dispatcher không Jetty cụ thể, nó là một phần của đặc tả servlet lên đến phiên bản 2.5. Dưới đây là mô tả chính thức cho giá trị của người điều phối từ web-app_2_5.xsd:

<xsd:complexType name="dispatcherType"> 
    <xsd:annotation> 
     <xsd:documentation> 

The dispatcher has four legal values: FORWARD, REQUEST, INCLUDE, 
and ERROR. A value of FORWARD means the Filter will be applied 
under RequestDispatcher.forward() calls. A value of REQUEST 
means the Filter will be applied under ordinary client calls to 
the path or servlet. A value of INCLUDE means the Filter will be 
applied under RequestDispatcher.include() calls. A value of 
ERROR means the Filter will be applied under the error page 
mechanism. The absence of any dispatcher elements in a 
filter-mapping indicates a default of applying filters only under 
ordinary client calls to the path or servlet. 

     </xsd:documentation> 
    </xsd:annotation> 

    <xsd:simpleContent> 
     <xsd:restriction base="javaee:string"> 
      <xsd:enumeration value="FORWARD"/> 
      <xsd:enumeration value="INCLUDE"/> 
      <xsd:enumeration value="REQUEST"/> 
      <xsd:enumeration value="ERROR"/> 
     </xsd:restriction> 
    </xsd:simpleContent> 
</xsd:complexType> 
Các vấn đề liên quan