< Prev
Next >



ServletRequestWrapper



In this article, we are going to understand how to use Wrappers in a web application. Wrappers are placed between the Servlet and the Servlet Container, due to which the interaction with Servlet is done using wrappers. There are two kinds of wrappers -

MyServlet1.java
package decodejava;

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

public class MyServlet1 extends GenericServlet
{

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
String name = request.getParameter("username");

PrintWriter out = response.getWriter();
out.println(name);
}

}





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 and this time, associate our filter class with our Servlet class -


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>

  
<filter>
 	<filter-name>Filter1</filter-name>
	<filter-class>decodejava.MyFilter1</filter-class>
</filter>

<filter-mapping>
	<filter-name>Filter1</filter-name>
	<url-pattern>/MyServ</url-pattern>
</filter-mapping>



<servlet>
 	<servlet-name>Servlet</servlet-name>
	<servlet-class>decodejava.MyServlet1</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>Servlet</servlet-name>
	<url-pattern>/MyServ</url-pattern>
</servlet-mapping>

</web-app>


In deployment descriptor file, The <filter> has two child tags <filter-name> and <filter-class>.




<servlet> has two child tags <servlet-name> and <servlet-class> :








Note







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 filter and the Servlet class by entering the command at the folder where you've stored the Servlet class file.

javac -d WEB-INF/classes RequestWrapper1.java


javac -cp ./WEB-INF/classes/;C:/apache-tomcat-9.0.2/lib/servlet-api.jar -d WEB-INF/classes MyFilter1.java


javac -d WEB-INF/classes MyServlet1.java





Executing the Servlet









Please share this article -

Facebook Google Pinterest Reddit Tumblr Twitter



< Prev
Next >
< ServletHttpSessionListener
ServletResponseWrapper >
Please subscribe our social media channels for notifications, we post a new article everyday.

Decodejava Google+ Page Decodejava Facebook Page  DecodeJava Twitter Page

Coming Next
-
Python

Ad2