To give you a start, a small real-world-example:
package com.cr.manuals.filter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class for Servlet: HeaderFilter
*
*/
public class HeaderFilter implements javax.servlet.Filter {
private static String PARAM_ADD_TO_CURRENT_MONTH =
"ADD_TO_CURRENT_MONTH";
private FilterConfig filterConfig = null;
private int months2Add = 0;
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public HeaderFilter() {
super();
}
/**
* init() : init() method called when the filter is instantiated.
* This filter is instantiated the first time j_security_check is
* invoked for the application (When a protected servlet in the
* application is accessed).
*/
public void init(FilterConfig aFilterConfig) throws ServletException {
filterConfig = aFilterConfig;
months2Add =
Integer.parseInt(filterConfig.getInitParameter(PARAM_ADD_TO_CURRENT_MONTH));
}
/**
* destroy() : destroy() method called when the filter is taken
* out of service.
*/
public void destroy() {
filterConfig = null;
}
/**
* doFilter() : doFilter() method called before the servlet to
* which this filteris mapped is invoked. Since this filter is
* mapped to j_security_check,this method is called before
* j_security_check action is posted.
*/
public void doFilter(ServletRequest aRequest, ServletResponse aResponse,
FilterChain chain) throws
java.io.IOException, ServletException {
//System.out.println ("******** filter *******");
HttpServletRequest request = (HttpServletRequest)aRequest;
HttpServletResponse response = (HttpServletResponse)aResponse;
// call next filter in the chain : let j_security_check
authenticate
// user
response.setHeader("Expires", createExpiresHeader(months2Add));
chain.doFilter(request, response);
}
/**
* Create a String in the format EEE, d MMM yyyy HH:mm:ss z"
* Example: Fri, 4 Aug 2006 09:07:44 CEST
* The value of the init-parama ADD_TO_CURRENT_MONTH is added to the
* month-field of the current date
* @return
*/
private String createExpiresHeader(int someMonths2Add) {
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy
HH:mm:ss z", Locale.US);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, someMonths2Add);
long millis = cal.getTimeInMillis();
Date d = new Date(millis);
return sdf.format(d);
}
}
In your web.xml:
<filter id="Filter_1">
<filter-name>HeaderFilter</filter-name>
<filter-class>com.cr.manuals.filter.HeaderFilter</filter-class>
<init-param>
<param-name>ADD_TO_CURRENT_MONTH</param-name>
<param-value>1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HeaderFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
HTH
Gregor
--
just because your paranoid, doesn't mean they're not after you...
gpgp-fp: 79A84FA526807026795E4209D3B3FE028B3170B2
gpgp-key available @ http://pgpkeys.pca.dfn.de:11371
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]