mvn archetype:generate -DgroupId=com.example -DartifactId=struts7-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
cd struts7-demo
<dependencies> <!-- Jakarta Struts Core --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>7.0.0</version> </dependency> <!-- Jakarta Servlet API --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> <!-- Optional: JSON Plugin for REST Support --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>7.0.0</version> </dependency> <!-- Optional: Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> </dependency> </dependencies>
mvn clean install
<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_0.xsd" version="6.0"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "https://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="hello" class="com.example.action.HelloAction"> <result name="success">/hello.jsp</result> </action> </package> </struts>
package com.example.action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { private String message; public String execute() { message = "Welcome to Jakarta Struts 7!"; return SUCCESS; } public String getMessage() { return message; } }
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head><title>Struts 7 Demo</title></head> <body> <h1><s:property value="message"/></h1> </body> </html>
mvn package
http://localhost:8080/struts7-demo/hello
Conclusion Jakarta Struts 7 is configured similarly to previous versions, but it is now aligned with Jakarta EE 10. You need to use Jakarta Servlet 6.0+ and deploy on a compatible container like Tomcat 10+.