Advertisement



< Prev
Next >



ServletResponse



Using the ServletResponse , we can not only write back an appropriate response to the user request but can also provide the details about the response to the user by setting the response headers.

This information about the response could be -
On the arrival of a user request, the Servlet Container creates the ServletResponse object or it may maintain a pool of ServletResponse objects and selects one response object to pass it to the service() method of Servlet class, thereby allowing the ServletResponse object to respond to the user request.

ServletResponse is an interface and it is a part of the Servlet API. The full path to import and access all the methods provided by ServletResponse is javax.servlet.ServletResponse.




ServletResponse methods


Let's take a look at the some of the most used methods part of javax.servlet.ServletResponse class.

Methods Description
String getCharacterEncoding() This method returns the character encoding for the response.
Locale getLocale() This method returns the preferred Locale of response.
String getContentType() This method returns the MIME type of the response body.
int getBufferSize() This method gets the buffer size for the response body.
void setCharacterEncoding(String ) This method sets the character encoding of the response.
void setLocale(Locale) This method sets the preferred locale of response.
void setContentType(String ) This method returns the MIME type of the body of request.
void setBufferSize(int ) This method set the buffer size for the body of response.
PrintWriter getWriter() This method returns the PrintWriter object to be able to write back to the user.





Creating a webpage which calls the Servlet


We are creating a webpage which asks the user to type in a survey through a form. This form calls the Servlet when user submits a form and sends the form data within the request to the server.

Form1.jsp
<html>

<head>
<title> ServletRequest Demo </title>
</head>


<body>
Please fill the survey :

<form action = "MyServlet">
Favorite color : <input type = "text"   name = "color" />
Favorite food : <input type = "text"   name = "food" /> <br/>


<input type = "submit" value = "submit" />
</form>

</body>
</html>



Advertisement




Using the ServletRequest to access the user request


We are creating a Servlet extending GenericServlet abstract class. In this Servlet class, we are accessing the information about the user request by accessing the form data(parameters) sent along the request and using ServletResponse object to write back a response and providing some details about the response. We have named this Servlet class MyServlet1.java.

MyServlet1.java
import java.io.*;
import javax.servlet.*;
import java.util.*;

public class MyServlet1 extends GenericServlet
{

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
{

//Using response object to set character encoding
response.setCharacterEncoding("UTF-8");

//Using response object to create a PrintWriter object to write back to client.
PrintWriter out = response.getWriter();

//Using response object to set the ContentType.
response.setContentType("text/html");

//Using response object to set the Locale
response.setLocale(new Locale("English", "India"));

//Using response object to set the buffer size of response body
response.setBufferSize(30000);

out.println("<h2>using ServletResponse</h2>");

//Using PrintWriter created by ServletResponse object to write back to the user
out.println("Hey, "+ request.getParameter("color") + " color is a good choice." +"<br/>");
out.println("So you like " + request.getParameter("food") + "?" + " That's great!" + "<br/>");


out.println("Response Locale : " + response.getLocale() + "<br/>");
out.println("Response  ContentType : " + response.getContentType() + "<br/>");
out.println("Response Character Encoding : " +  response.getCharacterEncoding() + "<br/>");
out.println("Response Buffer Size : " +  response.getBufferSize() + "KB");

}
}






Directory Structure of Servlet files




The diagram above depicts how to arrange the Servlet files in a specific directory structure, as per Java Servlet Specification-






Creating the Deployment Descriptor file


As per the Java Servlet specifications, every web application based on Servlet must have a Deployment Descriptor file(an XML file) named web.xml. So, let's create one -


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">

  <display-name>Welcome tomcat</display-name>
  <description>
     Welcome tomcat
  </description>

<servlet>
 	<servlet-name>ServletResponseExample</servlet-name>
	<servlet-class>MyServlet1</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>ServletResponseExample</servlet-name>
	<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

</web-app>


In deployment descriptor file, <servlet> has two child tags <servlet-name> and <servlet-class> :






Note


The child tag <servlet-name> of <servlet> tag is matched with the <servlet-name> child tag of <servlet-mapping>. The <url-pattern> child tag is used to specify the URL to access Servlet and we have named this URL MyServlet.




Setting the classpath


Much of the support for developing the web applications based on the Java Servlet technology does not come with the core Java. Hence, in order to compile the Servlet programs, we have to set the classpath to a jar file named servlet-api.jar.

This jar file provides all the classes that are required for the Servlet programming and it comes within the lib Folder of Tomcat installation folder.

For example, in our case we have installed Tomcat Web Server within the C: Drive, hence the path to our lib folder containing the servlet-api.jar is - C:\apache-tomcat-9.0.2\lib

There are two ways to set the classpath -




Compiling the Servlet class


After setting the classpath, you need to compile the Servlet class by entering the command at the folder where you've stored the Servlet class file.

javac -d WEB-INF/classes MyServlet1.java





Executing the Servlet


First we execute the webpage containing the form, asking the user to enter the name and press submit button.



As soon as the user enters the name and submits the form, the request goes to the Servlet.

Hence, you will see the URL containing the full path to the file with the request parameter -




This Servlet writes back a personalised welcome message to the user, by creating a PrintWriter object and by accessing the value of parameter color, food through the ServletRequest object. The Servlet also displays the information about the response i.e. locale, character set encoding, buffer size of response body, content-type using the ServletResponse object.




Please share this article -




< Prev
Next >
< ServletRequest
Request Attributes >



Advertisement

Please Subscribe

Please subscribe to our social media channels for daily updates.


Decodejava Facebook Page  DecodeJava Twitter Page Decodejava Google+ Page




Advertisement



Notifications



Please check our latest addition

C#, PYTHON and DJANGO


Advertisement