2010-06-09 6 views

ответ

8

Вы можете добавить заголовки по конфигурации. В jetty.xml, поместите следующий пример:

<New id="RewriteHandler" class="org.eclipse.jetty.rewrite.handler.RewriteHandler"> 
    <Set name="rules"> 
    <Array type="org.eclipse.jetty.rewrite.handler.Rule"> 

     <Item> 
     <New id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"> 
      <Set name="pattern">*.jsp</Set> 
      <Set name="name">myheader</Set> 
      <Set name="value">the value of myheader</Set> 
     </New> 
     </Item> 

    </Array> 
    </Set> 
</New> 

<Set name="handler"> 
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> 
    <Set name="handlers"> 
     <Array type="org.eclipse.jetty.server.Handler"> 
     <Item> 
      <Ref id="RewriteHandler"/> 
     </Item> 
     </Array> 
    </Set> 
    </New> 
</Set> 

См RewriteHandler api другие примеры того, что можно (это было уже доступно в Jetty 6 RewriteHandler)

Для получения дополнительной информации, вот моя конфигурация Maven из молы плагина:

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>8.1.5.v20120716</version> 
    <configuration> 
    <jettyXml>${basedir}/src/main/etc/jetty.xml</jettyXml> 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-http</artifactId> 
     <version>8.1.5.v20120716</version> 
     <type>jar</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-rewrite</artifactId> 
     <version>8.1.5.v20120716</version> 
     <type>jar</type> 
     <scope>runtime</scope> 
    </dependency> 
    </dependencies> 
</plugin> 
+0

Ссылки мертвы – Rushil

8

Общий ответ на мой вопрос, конечно, это:

<web-app> 

    <filter> 
    <filter-name>headersFilter</filter-name> 
    <filter-class>com.example.MyHeadersFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>headersFilter</filter-name> 
    <url-pattern>*</url-pattern> 
    </filter-mapping> 

    ... 

</web-app> 

public class MyHeadersFilter implements Filter { 

    @Override 
    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) 
      throws IOException, 
      ServletException { 

     final HttpServletRequest httpRequest = (HttpServletRequest) request; 
     final HttpServletResponse httpResponse = (HttpServletResponse) response; 

     final String requestUri = httpRequest.getRequestURI(); 

     if (requestUri.matches(...)) { 
      httpResponse.addHeader(...); 
     } 

     chain.doFilter(request, response); 
    } 
} 

Это должно работать в любом JavaEE веб-контейнер (и может быть придан более конфигурируемый с <init-param> с).

Но разве нет способа сделать это чисто декларативно в Jetty?

+0

Принимается, пока кто-нибудь не узнает, как сделать это декларативно. –

Смежные вопросы