Bereitstellung zusätzlicher Servlets 25.02
webforJ leitet alle Anfragen standardmäßig über WebforjServlet
, das in der web.xml auf /*
abgebildet ist. Dieses Servlet verwaltet den Lebenszyklus von Komponenten, das Routing und die UI-Aktualisierungen, die Ihre webforJ-App antreiben.
In einigen Szenarien müssen Sie möglicherweise zusätzliche Servlets neben Ihrer webforJ-App bereitstellen:
- Integration von Drittanbieterbibliotheken, die ihre eigenen Servlets bereitstellen
- Implementierung von REST-APIs oder Webhooks
- Verarbeitung von Dateiuploads mit benutzerdefinierter Verarbeitung
- Unterstützung von legacy servlet-basiertem Code
webforJ bietet zwei Ansätze zur Bereitstellung benutzerdefinierter Servlets neben Ihrer App:
Ansatz 1: Remapping WebforjServlet
Dieser Ansatz remapped das WebforjServlet
von /*
auf einen bestimmten Pfad wie /ui/*
, wodurch der URL-Namespace für benutzerdefinierte Servlets freigegeben wird. Obwohl dies eine Anpassung der web.xml erfordert, ermöglicht es benutzerdefinierten Servlets den direkten Zugriff auf ihre URL-Muster ohne Proxy-Overhead.
<web-app>
<!-- WebforjServlet remapped um nur /ui/* zu behandeln -->
<servlet>
<servlet-name>WebforjServlet</servlet-name>
<servlet-class>com.webforj.servlet.WebforjServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebforjServlet</servlet-name>
<url-pattern>/ui/*</url-pattern>
</servlet-mapping>
<!-- Benutzerdefiniertes Servlet mit eigenem URL-Muster -->
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello-world</url-pattern>
</servlet-mapping>
</web-app>
Mit dieser Konfiguration:
- webforJ-Komponenten sind unter
/ui/
zugänglich - Das benutzerdefinierte Servlet bearbeitet Anfragen an
/hello-world
- Kein Proxy-Mechanismus - direktes Routing des Servlet-Containers
Wenn Sie webforJ mit Spring Boot verwenden, gibt es keine web.xml
-Datei. Stattdessen konfigurieren Sie das Servlet-Mapping in der application.properties
:
webforj.servlet-mapping=/ui/*
Dieses Property remapped WebforjServlet
von dem Standard /*
auf /ui/*
, wodurch der URL-Namespace für Ihre benutzerdefinierten Servlets freigegeben wird. Fügen Sie keine Anführungszeichen um den Wert hinzu - sie werden als Teil des URL-Musters interpretiert.
Ansatz 2: Proxy-Konfiguration von WebforjServlet
Dieser Ansatz behält WebforjServlet
bei /*
und konfiguriert benutzerdefinierte Servlets in webforJ.conf
. Das WebforjServlet
fängt alle Anfragen ab und leitet übereinstimmende Muster an Ihre benutzerdefinierten Servlets weiter.
Standard-web.xml-Konfiguration
<servlet>
<servlet-name>WebforjServlet</servlet-name>
<servlet-class>com.webforj.servlet.WebforjServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebforjServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- Benutzerdefiniertes Servlet mit eigenem URL-Muster -->
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello-world</url-pattern>
</servlet-mapping>
</web-app>
webforJ.conf-Konfiguration
servlets = [
{
name = "hello-world"
class = "com.example.HelloWorldServlet"
}
]
Mit dieser Konfiguration:
WebforjServlet
verarbeitet alle Anfragen- Anfragen an
/hello-world
werden anHelloWorldServlet
weitergeleitet