response.addHeader & response.setHeader not working for Servlet/JSP/Filter
843842May 13 2008 — edited May 13 2008Hi all,
I have been trying to do something which I thought should be very simple, but it does not work for some reason. I am using tomcat 5.5.12 with JDK 1.6.0_05
I am trying to send some headers from my JSP file to the servlet. I tried
using this code.
response.addHeader("sample", "Sample Value");
response.setHeader("sample", "Sample Value");
In the servlet i tried retrieving them, but with no success.
I read somewhere that neither a JSP nor a servlet has the right to modify
the request or response. So the suggestion was to use Filters. I have tried
using filters the code is pasted hereunder. but this thing also doesnt seem
to work.
JSP CODE
++++++++++++
<%
response.setContentType ("text/html");
response.setHeader("Sample","Sample Value");
System.out.println("CONTAINS HEADER = " +
response.containsHeader("Sample"));
response.sendRedirect("CompressionTest");
%>
++++++++++++
FILTER CODE
++++++++++++
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestFilter implements Filter{
private FilterConfig config = null;
public void init(FilterConfig filterConfig) {
config = filterConfig;
}
public void destroy() {
this.config = null;
}
public void doFilter ( ServletRequest request, ServletResponse response,
FilterChain chain ) throws IOException, ServletException {
System.out.println("INSIDE THE DOFILTER METHOD IN THE FILTER SERVLET.
SETTING THE HEADER NOW.");
HttpServletResponse httpresponse = (HttpServletResponse)response;
HttpServletRequest httprequest = (HttpServletRequest)request;
System.out.println("VALUE OF HEADER FROM JSP = " +
httprequest.getHeader("Sample"));
httpresponse.setHeader("testing", "testing value");
System.out.println("INSIDE THE DOFILTER METHOD IN THE FILTER SERVLET.
AFTER SETTING THE HEADER.");
chain.doFilter(request, httpresponse);
return;
}
}
++++++++++++
SERVLET CODE
++++++++++++
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
HttpServletRequest httprequest = (HttpServletRequest)request;
System.out.println("VALUE OF HEADER FROM JSP = " +
httprequest.getHeader("Sample"));
System.out.println("VALUE OF HEADER FROM FILTER = " +
httprequest.getHeader("testing"));
}
}
Please advice. Thanks in Advance.
~ Pai