Setting Response Content Type and PrintWriter in Java Servlets
Introduction
In a Java web application, a Servlet receives a request and sends a response back to the browser.
To send a proper response, two things are extremely important:
Setting the response content type
Writing output using
PrintWriter
If these are not handled correctly:
The browser may not display content properly
Data may appear as plain text instead of HTML
APIs may break
This guide explains both concepts step by step, assuming no prior knowledge.
What Is Response Content Type?
Simple Definition:
Response content type tells the browser what kind of data the server is sending.
In simple words:
It helps the browser understand how to display the response.
Why Is Setting Content Type Important?
Different responses need different handling:
HTML pages → rendered as web pages
JSON → parsed by JavaScript
Plain text → shown as simple text
Without content type:
Browser guesses (often incorrectly)
Output may not display as expected
Common Response Content Types
| Content Type | Usage |
|---|---|
text/html | HTML pages |
text/plain | Simple text |
application/json | JSON APIs |
application/xml | XML data |
image/png | Images |
Most beginner servlets use text/html.
How to Set Response Content Type
Syntax
response.setContentType("text/html");
Always set the content type before writing output.
What Is PrintWriter?
Simple Definition:
PrintWriter is a Java class used to write text output to the browser.
In simple words:
PrintWritersends text (HTML, JSON, etc.) from the servlet to the user.
Getting PrintWriter from Response
PrintWriter out = response.getWriter();
The HttpServletResponse object provides the writer.
Writing Output Using PrintWriter
Basic Example
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello from Servlet</h1>");
out.println("<p>This is servlet output.</p>");
The browser renders this as an HTML page.
Complete Example: Content Type + PrintWriter
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h2>Welcome to My Servlet</h2>");
out.println("</body>");
out.println("</html>");
}
Explanation:
Content type tells browser it’s HTML
PrintWriter sends HTML tags
Browser renders the page
Sending Plain Text Response
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.println("This is plain text output");
No HTML rendering—just text.
Sending JSON Response (Intro Level)
response.setContentType("application/json");
PrintWriter out = response.getWriter();
out.println("{\"message\": \"Hello JSON\"}");
Used in APIs and AJAX calls.
Real-Life Analogy
Think of a Parcel
Content Type → Label on the parcel (Fragile, Document, Food)
PrintWriter → The item inside the parcel
Without a label, the receiver won’t know how to handle it.
Best Practices for Beginners
- Always set content type first
- Use
PrintWriterfor text-based responses - Keep HTML minimal in servlets
- Use JSP or templates for large HTML
- Close writer if needed (
out.close())
Quick Comparison Table
| Feature | Content Type | PrintWriter |
|---|---|---|
| Purpose | Describe response | Send response |
| Controls | How browser reads data | What data is sent |
| Method | setContentType() | getWriter() |
| Used For | Format identification | Output writing |