under directory WEB-INF create 2 folder
- src
- classes
under src, we place servlet and java code.
for package com.dedetok, create folder ~/WEB-INF/src/com/dedetok/ and write 2 files
MyWorld.java
package com.dedetok;
public class MyWorld {
public String getMessage() {
return "hello world";
}
}
HelloServlet.java
package com.dedetok;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
MyWorld world = new MyWorld();
response.setContentType("text/plain");
response.getWriter().println(world.getMessage());
}
}
We map our servlet, edit ~/WEB-INF/web.xml
<?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_6_1.xsd"
version="6.1">
<display-name>My Application</display-name>
<servlet>
<servlet-name>Hello Anything</servlet-name>
<servlet-class>com.dedetok.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello Anything</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
Note: <servlet-name> between <servlet> and <servlet-mapping> must match.
compile your java, go it ~/WEB-INF/ folder and run
$ javac -cp /home/dedetok/apache-tomcat-11.0.26/lib/servlet-api.jar -d ./classes ./src/com/dedetok/*.java
restart your jakarta tomcat and try servlet http://localhost:8080/myapp/hello. hello comes from <servlet-mapping>
It is not practicable to map every servlet, there is other way
now at directory ~/WEB-INF/src/com/dedetok/ create HelloServlet2.java
package com.dedetok;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import jakarta.servlet.annotation.WebServlet;
@WebServlet("/hello2")
public class HelloServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
MyWorld world = new MyWorld();
response.setContentType("text/plain");
response.getWriter().println(world.getMessage()+" 2");
}
}
we use @WebServlet("/hello2") to map url. do not forget to import jakarta.servlet.annotation.WebServlet.
compile it, and restart your jakarta tomcat. you can access it via http://localhost:8080/myapp/hello2.
To use MyWorld class into jsp, at directory ~/myapp/ (upper directory from WEB-INF) , create file callservlet.jsp
<%@ page import="com.dedetok.MyWorld" %>
<%
MyWorld world = new MyWorld();
%>
<html>
<body>
<h1><%= world.getMessage() %></h1>
</body>
</html>
or use wildcard for import="com.dedetok.*"
Now you can directly build your application. MVC model can be used if you like. happy coding.