I have some problems with a Java servlet API with Tomcat 10.0.16. I try to understand how it works because it is way much harder than a JavaScript API or a Python API.
I try to make a simple application nothing too complicated but I cannot make my function work. More precisely, when I try to go to my servlet method. I have an error 500 saying that it cannot find my Java class. The structure of my project looks like this:
test
|-WEB-INF
| |-classes
| | |-DemoServlet.java
| |-web.xml
|-index.html
My index.html file is written like this:
<!DOCTYPE HTML><html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<h3>Demo</H3>
<form action="demo" method="GET">
<input type="text" size="20" name="dataname">
<br>
<button>Click me!</button>
</form>
</body>
</html>
My web.xml file looks looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demotest</url-pattern>
</servlet-mapping>
</web-app>
Finally, my Java servlet class look like this:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ResourceBundle;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class DemoServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.getLocale());
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html><html>");
out.println("<head>");
out.println("<meta charset=\"UTF-8\" />");
String title = rb.getString("demo.title");
out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body>");
out.println("<h3>" + title + "</h3>");
String dataName = request.getParameter("dataname");
out.println("<p>");
out.print("You entered: ");
out.println(dataName);
out.println("</p>");
out.print("<form ");
out.print("action=\"");
out.print(response.encodeURL("demoPL"));
out.print("\"");
out.println("method=\"GET\">");
out.println("<input type=\"text\" size=\"20\" name=\"dataname\">");
out.println("<br>");
out.println("<button>Click me!</button>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}
}
I based my code on the examples folder in the Tomcat webapps directory. I am a beginner with Java API and if this kind of question has already been responded, just comment the link in the response.