Top 30 Struts Interviewvragen & Antwoorden (2026 Editie)

Zich voorbereiden op een Struts-gesprek? Of u nu legacy Struts 1-applicaties onderhoudt of met Struts 2 werkt, deze gids behandelt 30 kerntechnische vragen – architectuur, configuratie, validatie, migratie en geavanceerde patronen – plus 10 gedragsmatige/situatiegewijze vragen met strategische modelantwoorden.
👉 Gratis PDF-download: Struts Interviewvragen & Antwoorden
Kern Framework-kennis
1. Struts-architectuur & Levenscyclus
Struts implementeert MVC: ActionServlet (controller) intercepted requests, raadpleegt struts-config.xml, delegatieert naar Action-class (model-interactie), die ActionForward retourneert naar een JSP (view).
| Stap | Beschrijving |
|---|---|
| 1 | Client-request → ActionServlet |
| 2 | Servlet leest config, vindt Action |
| 3 | Action voert business-logica uit |
| 4 | Retourneert ActionForward |
| 5 | JSP rendert response |
Voorbeeld: E-commerce checkout: Action valideert winkelwagentje, roept betalingsservice aan, forward naar success/error JSP.
2. Action-classtypen (Struts 1)
| Type | Kenmerken | Use Case |
|---|---|---|
| Action | Basis-request-afhandeling | Eenvoudige flows |
| DispatchAction | Meerdere methoden via param | CRUD op enkele pagina |
| LookupDispatchAction | Key-method-map (i18n-vriendelijk) | Meertalige UI's |
| MappingDispatchAction | Gebruikt action-mapping voor routing | Complexe routing |
Voorbeeld: DispatchAction hanteert add/edit/delete in één class.
3. Struts 1 vs Struts 2: Migratie-afwegingen
| Aspect | Struts 1 | Struts 2 |
|---|---|---|
| Action Classes | Extenderen framework-base | Plain POJOs |
| Data Binding | ActionForm beans | Direct POJO via OGNL |
| Uitbreidbaarheid | Beperkt | Interceptor-gebaseerd, hoog aanpasbaar |
| Migratie-impact | Geen | Significante refactoring |
Upgrade-winst: minder boilerplate, moderne features. Kosten: config-wijzigingen, deprecated componenten.
4. Struts-configuratiesysteem
struts-config.xml (Struts 1) of struts.xml (Struts 2) definieert: form-beans, action-mappings, global-forwards, plug-ins, message-resources. Struts 2 ondersteunt modulair struts.xml per package en annotaties.
5. Struts 2 Interceptors: Levenscyclus & Rol
Modulaire pre/post-verwerkingseenheden (validatie, logging, auth, params). Stack voert uit voor Action, dan na in omgekeerde volgorde. params interceptor vult properties; validation zorgt voor correctheid. Vermindert boilerplate, consistente cross-cutting-logica.
6. Validatiebenaderingen
| Type | Voordelen | Nadelen |
|---|---|---|
Declaratief (validation.xml) | Gecentraliseerd, herbruikbaar, onderhoudbaar | Minder flexibel voor dynamische regels |
| Programmatisch (Action/Form) | Hoogst aanpasbaar | Verhoogt class-complexiteit |
Voorbeeld: Declaratief voor e-mailformaat; programmatisch voor unieke username via DB-check.
7. ActionForm vs POJO-formulieren (Struts 2)
Struts 1: apart ActionForm dupliceert domeinmodel. Struts 2: directe POJO-binding via OGNL – schoner, minder redundantie, makkelijker testen.
// Struts 1: UserForm extends ActionForm // Struts 2: User POJO direct gebruikt
8. Struts 2 Result-typen
| Result-type | Doel |
|---|---|
| dispatcher | Forward naar JSP (standaard) |
| redirect | Nieuwe request-cyclus (voorkomt resubmit) |
| redirectAction | Redirect naar andere action |
| chain | Roep andere action direct aan |
| stream | Binaire output (bestanden, rapporten) |
9. ActionServlet / FilterDispatcher-rol
Centrale controller: interpreteert config, selecteert Action, beheert levenscyclus, roept logica aan, bepaalt view. Zonder het, geen voorspelbare routing of MVC-afdwinging.
10. Internationalisatie (i18n)
Property-bestanden als message resources; auto-geselecteerd op locale. Tags: <bean:message> (Struts 1), <s:text> (Struts 2). Kenmerken: gestructureerde resources, auto-locale-detectie, herbruikbare keys.
Voorbeeld: "Username" → "Nombre de usuario" via locale-switch.
11. Exception-afhandeling
Declaratief: <exception> in config mapt exception-typen naar result-pagina's. Programmatisch: try-catch in Action. Declaratief = consistentie; programmatisch = contextuele responses (auth-fouten → waarschuwingspagina, systeemfouten → onderhoudspagina).
12. Struts-tagbibliotheken
Struts 1: <html:form>, <bean:write>, <logic:iterate>. Struts 2: <s:form>, <s:textfield>, <s:iterator>. Bind formuliervelden direct: <html:text property="username"/>.
13. OGNL in Struts 2
Object-Graph Navigation Language: expressie-evaluatie, request-param-naar-POJO-binding, diepe graaf-navigatie. address.street, address.city auto-populeren geneste objecten.
14. RequestProcessor (Struts 1) vs Interceptor-stack (Struts 2)
| Kenmerk | RequestProcessor | Interceptor-stack |
|---|---|---|
| Uitbreidbaarheid | Beperkt (subclassing) | Hoog flexibel (configureerbaar) |
| Gedrag | Monolithisch | Modulair, gedistribueerd |
| Voordelen | Eenvoud | Scheiding van concerns |
15. Bestandsupload-implementatie
Struts 1: Apache Commons FileUpload. Struts 2: ingebouwde <s:file> tag. Overwegingen: groottelimits, MIME-validatie, veilige opslag, malicious-upload-preventie.
16. Struts 2 Flexibiliteitsfeatures
Interceptor-architectuur, POJO-actions, DI-ondersteuning (Spring-plugin), custom result-typen, plugins (JSON, REST, Spring). Voorbeeld: globale auth/logging-interceptors elimineren duplicatie.
17. Struts vs Spring MVC
| Aspect | Struts | Spring MVC |
|---|---|---|
| Controller | Action-gebaseerd | Annotatie-gebaseerd |
| Config | XML-zwaar | Lichtgewicht |
| Testen | Matig | Zeer makkelijk |
| Integratie | Beperkt | Volledig Spring-ecosysteem |
| Best voor | Legacy-onderhoud | Nieuwe projecten |
18. Tiles-integratie
Templating via tiles-defs.xml: definieer layouts (header, footer, body), map naar action-forwards. Herbruikbare layouts, consistente look, makkelijkere UI-updates.
19. Dependency Injection in Struts
Struts 1: geen native DI. Struts 2: struts2-spring-plugin injecteert dependencies in Actions. OrderService geïnjecteerd in OrderAction → schoner, testbaarder.
20. Struts 1 → 2 Migratie-stappen & uitdagingen
- Herschrijf Actions als POJOs
- Vervang ActionForms door domeinobjecten
- Herontwerp validatie (XML → annotaties/interceptors)
- Update config (
struts-config.xml→struts.xmlpackages) - Migreer JSP-tags (Struts 1 → Struts 2 UI-tags)
- Pas aan aan OGNL & interceptor-model
Uitdagingen: deprecated features, custom RequestProcessor-logica, form-binding-wijzigingen. Opbrengst: schonere architectuur, uitbreidbaarheid, lager onderhoud.
21. Config-bestandsstructuur & onderhoudbaarheid
Struts 1: enkel groot struts-config.xml → moeilijk te onderhouden. Struts 2: modulair struts.xml per package/module (bijv. inventory-struts.xml, finance-struts.xml) + annotaties.
22. Validator-framework
XML-gedefinieerde regels (verplicht, e-mail, lengte) + auto-JavaScript-generatie. Dubbele client/server-validatie. Vermindert boilerplate, zorgt voor consistentie.
23. ValueStack in Struts 2
Per-request data-stack: Action-properties, temp-objecten, OGNL-toegankelijk. Gelaagde structuur zorgt voor correcte waarde-resolutie. <s:iterator value="products"> haalt lijst direct op – ontkoppelt view van controller.
24. Sessiebeheer: Struts vs Servlet API
Struts 1: sessie-gescopeerde ActionForms. Struts 2: SessionAware-interface injecteert sessie-map via interceptor. Type-veilig, minder boilerplate dan raw HttpSession.
25. Interceptor-stacks voor Cross-Cutting Concerns
Configureerbare interceptor-verzamelingen per package/action. Financiële module: strikte stack (audit, auth, encryptie). Publieke catalogus: lichtgewicht stack. Modulair, onderhoudbaar.
26. ActionErrors & ActionMessages (Struts 1)
Verzamelen meerdere fout/succes-boodschappen; tonen via <html:errors>/<html:messages>. Schone logica/presentatie-scheiding.
27. Multi-module-configuratie
Struts 1: aparte configs per URL-prefix (admin, user, reporting). Struts 2: packages. Voordelen: isolatie, parallelle dev, onafhankelijke deploy/test.
28. DispatchAction-varianten & code-optimalisatie
| Class | Methode-selectie | Best voor |
|---|---|---|
| DispatchAction | Request-parameter | CRUD |
| LookupDispatchAction | Resource-key → methode-map | i18n-formulieren |
| MappingDispatchAction | Action-mapping | Complexe routing |
Consolideert gerelateerde operaties in één class.
29. Result-typen & Navigatieflexibiliteit
Selectiefactoren: flow, prestaties, beveiliging, content-type. redirect voorkomt resubmit; dispatcher sneller voor intern; stream voor PDF/downloads.
30. Struts 2 Action-levenscyclus vs Struts 1
Struts 2: FilterDispatcher → ValueStack-init → Interceptor-stack (params, validatie, etc.) → Action execute → Interceptor post-verwerking → Result-render. Belangrijkste verschillen: POJO-actions, geen ActionForm, interceptors vervangen monolithische RequestProcessor.
Voorbeeld: PurchaseAction: auth-interceptor → validatie-interceptor → logging-interceptor → Action → result.
🔍 Real-World Scenario Vragen (Gedragsmatig & Situatiegericht)
Geen afkortingen; vereiste zinnen gebruikt precies één keer elk.
1. Leg Struts-framework & enterprise-gebruik uit.
Verwacht: MVC, scheiding van concerns, enterprise-voordelen.
Antwoord: "Struts is een Java-gebaseerd webapplicatieframework dat de Model-View-Controller-architectuur volgt. Het wordt in enterprise-applicaties gebruikt omdat het gecentraliseerde configuratie, herbruikbare componenten en een duidelijke scheiding van concerns biedt. Deze features helpen teams grote schaal applicaties efficiënter te onderhouden."
2. MVC binnen Struts?
Verwacht: ActionServlet, Action, JSP-rollen.
Antwoord: "In Struts wordt de controller beheerd door de ActionServlet, die gebruikersverzoeken ontvangt en ze routeert naar de juiste Action-class. Het model bevat de business-logica en data-afhandeling, terwijl de view JSP's gebruikt om de verwerkte informatie te presenteren. Deze structuur verbetert onderhoudbaarheid en vermindert koppeling."
3. Doel van struts-config.xml?
Verwacht: Configuratie-centrale kennis.
Antwoord: "Het struts-config.xml-bestand bevat de kernapplicatieconfiguratie, inclusief form-beans, globale forwards, action-mappings en controller-instellingen. Het stelt ontwikkelaars in staat om request-flow en component-interacties vanaf een enkel gecentraliseerd bestand te beheren."
4. ActieForm-rol & wanneer te gebruiken?
Verwacht: Formulierafhandeling, validatie.
Antwoord: "ActionForm is een JavaBean die gebruikt wordt om gebruikersinput vast te leggen en te valideren voordat het de Action-class bereikt. Het wordt gebruikt wanneer een applicatie gestructureerde formulierdata en invoervalidatie vereist voordat de controller het verzoek verwerkt."
5. Uitdagend probleem opgelost in Struts-app?
Verwacht: Technische obstakel-resolutie.
Antwoord: "In mijn vorige rol liep ik een probleem tegen waar formuliervalidatie niet correct triggerde door een incorrecte mapping in het struts-config.xml-bestand. Ik traceerde het probleem met gedetailleerde logging, corrigeerde de mapping, en verbeterde de validatielogica om vergelijkbare problemen te voorkomen."
6. Codekwaliteit & onderhoudbaarheid in legacy Struts?
Verwacht: Best practices voor oudere frameworks.
Antwoord: "Ik focus op het modulair maken van Action-classes, gedupliceerde logica verwijderen, en duidelijke documentatie toevoegen. Ik introduceer ook unittests om business-logica te verifiëren. Deze praktijken helpen stabiliteit te verbeteren en risico's in legacy-omgevingen te verminderen."
7. Troubleshoot formulierdata die niet correct submits.
Verwacht: Logische debug-stappen.
Antwoord: "Ik zou beginnen met verifiëren dat de formuliervelden overeenkomen met de ActionForm-property-namen. Dan zou ik de action-mapping in struts-config.xml controleren om te zorgen dat de form-bean correct geassocieerd is. Indien nodig, zou ik debug-logs inschakelen om request-parameters te traceren en te identificeren waar de data-flow breekt."
8. Dode lijnen, meerdere Struts-modules.
Verwacht: Prioritering, organisatie onder druk.
Antwoord: "Op een eerdere positie hanteerde ik deze situatie door taken op te breken in kleinere leverables, te prioriteren op basis van business-impact, en status-updates te communiceren naar stakeholders. Deze aanpak zorgde ervoor dat alle modules aandacht kregen zonder kwaliteit in te boeten."
9. Migreren van Struts naar Spring MVC?
Verwacht: Migratiestrategie, risicomigratie.
Antwoord: "Ik zou eerst de bestaande modules beoordelen om dependencies en complexiteit te identificeren. Dan zou ik een incrementele migratiestrategie ontwerpen die Struts-controllers vervangt door Spring-componenten terwijl de applicatie functioneel blijft. Goede documentatie en testen zouden een soepele overgang garanderen."
10. Cross-functionele samenwerking om Struts-app te verbeteren?
Verwacht: Communicatie, teamwerk, coördinatie.
Antwoord: "Op mijn vorige werk heb ik samengewerkt met QA, UI-designers en backend-ontwikkelaars om request-afhandeling in een Struts-module te optimaliseren. Onze coördinatie verbeterde de responstijd, verbeterde de UI-flow, en verminderde defects in de daaropvolgende release."
Java
- JDK 10 Deprecaties: Belangrijkste API's, features & opties gemarkeerd voor verwijdering
- Java Object Serialisatie: Objecten Persisteren en Herstellen
- Java Exception Handling meesteren: Try, Catch, Finally, Throw & Throws uitgelegd
- Java 9 Ontwikkelomgeving Installatiehandleiding
- Java 9 verbetert @Deprecated Annotation: forRemoval en betere richtlijnen
- Constructor Overloading in Java – Uitgelegd met Praktische Codevoorbeelden
- Java 10 introduceert Time-Based Release Versioning voor voorspelbare halfjaarlijkse updates
- Een String omkeren in Java met recursie – Stapsgewijze handleiding
- Java SortedSet onder de knie: Praktische gids voor TreeSet en zijn methoden
- Java multidimensionale arrays beheersen: 2D & 3D voorbeelden
- Java Applets: Basisprincipes en belangrijkste verschillen