Develop Servlets with Tomcat on XAMPP
Embarking on the journey of servlet development with Tomcat on a Windows environment using XAMPP opens up a world of possibilities for web application enthusiasts. In this blog, we delve into the intricacies of crafting dynamic, server-side applications, leveraging the powerful combination of Apache Tomcat and XAMPP.
I. Tomcat Setup
1. Start the Tomcat Service
The server has been initiated and is actively receiving requests, prepared to deliver responses on port 8080.
2. You should now be able to see the below page on your browser on localhost:8000 / 127.0.0.1:8080 :
3. Manager Setup: Access the tomcat-users.xml file found in the C:\xampp\tomcat\conf\tomcat-users.xml
file, remove the commenting from the specified role and user, and update the password to a memorable one.
4. Access the manager application from the browser using localhost:8080/manager or from the front end.
The Tomcat Web Application Manager will showcase all applications residing in the webapps
folder. (C:\xampp\tomcat\webapps)
II. Developing and Deploying the Servlet
- Open the webapps folder in VSCODE.
2. Install the Extension Pack for Java
plugin.
3. Create Java Project.
4. Choose No Build Tools
followed by webapps
folder as Project Location.
Project Name: auth
[Can be any name without spaces and hyphens]
Note: webapps folder must be open when creating the project so that the project named auth can be created inside the folder.
VSCode will automatically open the auth folder in a separate window. Now go ahead and close the webapps
folder window.
5. Modify the .vscode/settings.json
file to incorporate the necessary adjustments for compiling and placing the class files in a suitable location within the WEB-INF
, enabling Tomcat to recognize them.
{
"java.project.sourcePaths": ["src"],
"java.project.outputPath": "WEB-INF/classes",
"java.project.referencedLibraries": [
"lib/**/*.jar"
]
}
6. Now copy servlet-api.jar
from the Tomcat library path xampp\tomcat\lib
and place the same in the lib folder inside the project path.
VVIMP Note: In an application development lifecycle, libraries are required in two places one during the compilation and one during the running of the instance. During compilation VSCode picks the libaries from the folder path we provide in settings.json i.e the project `auth\lib` path of the application but while the application is running in the server Tomcat expects the library to be present in the `tomcat\lib` folder. So the jar must be kept in both the locations or VSCode must be provided with the appropriate path `tomcat\lib` directory for the successful compilation of a java servlet.
7. Create a folder structure in the source src
folder for the application.
src\com\fire\App.java
package com.fire;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
import javax.servlet.ServletException;
public class App extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet App</title>");
out.println("</head>");
out.println("<body>");
out.println("Welcome to the Servlet App");
out.println("</body>");
out.println("</html>");
}
}
8. Upon saving the App.java
file, a directory named WEB-INF\classes
is automatically generated, and the App.class
file is also located within the same folder.
Not required: Compiling the old way with all libraries from lib:
javac -cp C:\xampp\tomcat\lib\* -d C:\xampp\tomcat\webapps\auth\WEB-INF\classes App.java
9. Add web.xml
with the following content to the WEB-INF
folder.
WEB-INF\web.xml
<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_3_1.xsd"
version="3.1"
metadata-complete="true">
<display-name>Auth</display-name>
<description>
Welcome to Auth
</description>
<servlet>
<servlet-name>App</servlet-name>
<servlet-class>com.fire.App</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>App</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
10. Refresh the manager page & Reload the auth application if required and click on the /auth
link.
Result:
Task: Now add JSON library to the lib directory in both tomcat/lib and auth/lib and test the working of the library.
Conclusion:
In wrapping up our exploration of servlet development with Tomcat and XAMPP on Windows, we’ve navigated through the fundamentals of setting up your environment and crafting dynamic web applications.
Thanks.