Default HTTP Headers set on Servlet Response in WebSphere Application Server

I wanted to check what all headers are set when i make a request to a HttpServlet deployed in WebSphere Application Server, so i created a simple web application which has 2 JSPs index.jsp and second.jsp that include a JavaScript file like this

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Debug Cache Application</title>

<script type="text/javascript" src="resource/test.js?v1"></script>

<a href='second.jsp'>Take to second.jsp</a>

In the index.jsp i am including test.js JavaScript on the page but that request is handled by ResourceServingServlet, which is mapped to handle all the requests mapped to /resource path. This is how my ResourceServingServlet looks like

package com.webspherenotes.performance;

import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ResourceServingServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("Entering ResourceServingServlet.doGet()");

System.out.println("Request path " + request.getPathInfo());
System.out.println("Query String " + request.getQueryString());
getServletContext().getRequestDispatcher("/js/test.js").include(request, response);
System.out.println("Exiting ResourceServingServlet.doGet()");

private void printRequestHeaders(HttpServletRequest request){
System.out.println("************** Request Header ****************");
Enumeration headerNames = request.getHeaderNames();
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName + " = " + headerValue);
System.out.println("************** *********** ****************");

The ResourceServingServlet is pretty simple in the doGet() method it is printing information about the request such as request path, query string, then forwarding control to printRequestHeaders() for printing all the HTTP headers and finally forwarding control to test.js file located in js folder for generating markup.

After deploying this servlet in my local WAS 6.1 environment i looked at what all headers are returned by Servlet for the request, note that i am setting only Content-Type header but reset of the headers are set by WAS for us

WAS is setting Content-Language header with value equal to English, i am assuming that's the default value and the Content-Length header equal to 44, which is size of the JavaScript file, Value of Date header is time when the response was generated and value of Server headers is WebSphere Application Server/6.1, which is the server which generated the response


Anonymous said...

Is it possible to set up global settings for example: *.jpg files to
set Cache-Control (max-age) header ?
Or E-Tag header.. I have only WAS server.. It is serving dynamic+static content
I want to have cache control on static content (with Etag or cache-control headers)..

Thanks in advance

srjwebsolutions said...

We are leading responsive website designing and development company in Noida.
We are offering mobile friendly responsive website designing, website development, e-commerce website, seo service and sem services in Noida.

Responsive Website Designing Company in Noida
Website Designing Company in Noida
SEO Services in Noida
SMO Services in Noida

Vikas Chaudhary said...

Battery Mantra is Authorized exide car battery dealer in Noida and Greater Noida. We are providing our service in Indirapuram, Delhi, Ashok Nagar.

Exide Battery Dealer in Noida
Battery Dealer in Noida
Authorized Battery Dealer in Noida
Car Battery Dealer in Noida
Car Battery Dealer
Exide Battery Dealer

EG MEDI said... is online medical store pharmacy in laxmi nagar Delhi. You can Order prescription/OTC medicines online.
Cash on Delivery available. Free Home Delivery

Online Pharmacy in Delhi
Buy Online medicine in Delhi
Online Pharmacy in laxmi nagar
Buy Online medicine in laxmi nagar
Onine Medical Store in Delhi
Online Medical store in laxmi nagar
Online medicine store in delhi
online medicine store in laxmi nagar
Purchase Medicine Online
Online Pharmacy India
Online Medical Store