org.clazzes.util.http
Class AbstractResourceSerlvlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by org.clazzes.util.http.AbstractResourceSerlvlet
All Implemented Interfaces:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig
Direct Known Subclasses:
ResourceServlet

public class AbstractResourceSerlvlet
extends javax.servlet.http.HttpServlet

An abstract base servlet, which provides the additional header functionality for concrete implementations.

Implementation od his servlet may be configured through initialization parameters inside a classical servlet container like in the following web.xml example:

 <servlet>
  ...
  <init-param>
   <param-name>additionalHeader.0</param-name>
   <param-value>X-Frame-Options: DENY</param-value>
  </init-param>
  <init-param>
   <param-name>additionalHeader.0.mimeTypeRegex</param-name>
   <param-value>text/html</param-value>
  </init-param>
  <init-param>
   <param-name>additionalHeader.1</param-name>
   <param-value>X-Frame-Options: SAMEORIGIN</param-value>
  </init-param>
  <init-param>
   <param-name>additionalHeader.1.pathRegex</param-name>
   <param-value>.*\.cache\.html</param-value>
  </init-param>
  <init-param>
   <param-name>additionalHeader.2</param-name>
   <param-value>X-UA-Compatible: IE=edge</param-value>
  </init-param>
  <init-param>
   <param-name>additionalHeader.2.mimeTypeRegex</param-name>
   <param-value>text/html</param-value>
  </init-param>
 </servlet>
 

In OSGi frameworks it is recommended to set up implementation od this servlet using blueprint or a similar technology using the supplied bean property setters like in the following example:

  <bean id="resourceServlet" class="...implementation of AbstractResourceServlet...">
    ...
    <bp:property name="additionalHeaders">
      <bp:list>
        <bp:bean class="org.clazzes.util.http.AdditionalHeader">
          <bp:property name="header" value="X-Frame-Options"/>
          <bp:property name="value" value="DENY"/>
          <bp:property name="mimeTypeRegex" value="text/html"/>
        </bp:bean>
        <bp:bean class="org.clazzes.util.http.AdditionalHeader">
          <bp:property name="header" value="X-Frame-Options"/>
          <bp:property name="value" value="SAMEORIGIN"/>
          <bp:property name="pathRegex" value=".*\.cache\.html"/>
        </bp:bean>
        <bp:bean class="org.clazzes.util.http.AdditionalHeader">
          <bp:property name="header" value="X-UA-Compatible"/>
          <bp:property name="value" value="IE=edge"/>
          <bp:property name="mimeTypeRegex" value="text/html"/>
        </bp:bean>
      </bp:list>
    </bp:property>
  </bean>
 

See Also:
Serialized Form

Constructor Summary
AbstractResourceSerlvlet()
           
 
Method Summary
 void addAdditionalHeader(AdditionalHeader additionalHeader)
           
 List<AdditionalHeader> getAdditionalHeaders()
           
 void init()
           
protected  void propagateAdditionalHeaders(javax.servlet.http.HttpServletResponse resp, String resolvedPath, String mimeType)
          Set matching additional headers on the given servlet response based on the given resolved path and MIME tpye.
 void setAdditionalHeaders(List<AdditionalHeader> additionalHeaders)
           
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractResourceSerlvlet

public AbstractResourceSerlvlet()
Method Detail

propagateAdditionalHeaders

protected void propagateAdditionalHeaders(javax.servlet.http.HttpServletResponse resp,
                                          String resolvedPath,
                                          String mimeType)
Set matching additional headers on the given servlet response based on the given resolved path and MIME tpye.

Parameters:
resp - The servlet response to set matching additional headers on.
resolvedPath - The resolved path starting with a slash or an empty string, if there was no path component after the serlvet's own path.
mimeType - The MIME type of the delivered resource or null, if no MIME type match should be performed.

setAdditionalHeaders

public void setAdditionalHeaders(List<AdditionalHeader> additionalHeaders)
Parameters:
additionalHeaders - Additional headers to be sent based on path and/or MIME type regex matching.

addAdditionalHeader

public void addAdditionalHeader(AdditionalHeader additionalHeader)
Parameters:
additionalHeader - An additional header to send.

getAdditionalHeaders

public List<AdditionalHeader> getAdditionalHeaders()
Returns:
Additional headers to be sent.

init

public void init()
          throws javax.servlet.ServletException
Overrides:
init in class javax.servlet.GenericServlet
Throws:
javax.servlet.ServletException


Copyright © 2013. All Rights Reserved.