servlet
Get all Request Headers in Servlet
This is an example on how to get all the Request Headers in a Servlet. This is to make it easy for the programmer to parse an HTTP request object and decide on the response you will provide.
In short in order to get all request headers in Servlet, on should follow these steps:
- Create a handleRequest method so you can use it both in doGet and doPost methods.
- Use
HttpServletRequest.getHeaderNames()
to get anEnumeration
of header names. - Use
HttpServletRequest.getHeaders(headerName)
to get the value of a specific header.
Here is the code:
package com.javacodegeeks.snippets.enterprise; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetAllRequestHeadersInServlet extends HttpServlet { private static final long serialVersionUID = -2128122335811219481L; public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { handleRequest(req, res); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { handleRequest(req, res); } public void handleRequest(HttpServletRequest req, HttpServletResponse res) throws IOException { PrintWriter out = res.getWriter(); res.setContentType("text/plain"); Enumeration<String> headerNames = req.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); out.write(headerName); out.write("n"); Enumeration<String> headers = req.getHeaders(headerName); while (headers.hasMoreElements()) { String headerValue = headers.nextElement(); out.write("t" + headerValue); out.write("n"); } } out.close(); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>JCG Snippets Web Project</display-name> <servlet> <servlet-name>JCG Snippets Application</servlet-name> <servlet-class>com.javacodegeeks.snippets.enterprise.GetAllRequestHeadersInServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JCG Snippets Application</servlet-name> <url-pattern>/jcgservlet</url-pattern> </servlet-mapping> </web-app>
URL:
http://myhost:8080/jcgsnippets/jcgservlet
Output:
host
myhost:8080
user-agent
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language
en-us,en;q=0.5
accept-encoding
gzip, deflate
accept-charset
ISO-8859-1,utf-8;q=0.7,*;q=0.7
connection
keep-alive
cache-control
max-age=0
This was an example on how to get all Request Headers in Servlet.
How to get request line eg post /cms/login.jsp http/1.1
Ah, I think you need to change lines 34, 39 and 40 in .java file. You should add backslash before “n” and “t”