Then our site is the right place to visit.
There are still a lot of applications in the wild, which are based on Struts 1.
A lot of effort, intelectual property and love has been invested in these applications.
They are still working and you don't want to recreate them form scratch.
But you are facing new challenges.
Struts support of new browsers
Struts support of mobile devices
Struts support of html5
Struts support of new JEE Runtimes and/or Versions
Struts support of new Security-Features
Struts support of Jakarta EE
Polyfill for Apaches old Struts 1.X
Struts support of none Oracle Java Version to save money. You may want the option to switch to Open JDK or another third party JVM.
Security-Updates for your applicaton server
Security-Updates for your Operating System
Struts support of Maven and/or Maven dependencies
Struts support for Legal and/or regulatory reasons
What you want or might want
Make your application run. Event if people tell you that you got not other option than to switch to another framework or to rebuild you whole application it on a modern basis. And that you will faile if you don't do ot.
Keep your application running.
Investment security
Smoothly refactor you Application to a modern basis. Therfore a step by step migraition of your application might be good - you wan't ot avoid to reimplement it from scratch.
Fix security known and or unknow security issues.
How to do it
In order to succeed your application should rely on a stable foundation.
But what does this mean?
All layer of you platform must be be under support.
The Operating-System
Java Version - Just use a Java-Version with Longtime-Support. Java Versions with LTS are 1.8 and Java 11. These are the Version for which we provide support.
You need a Software-Stack with LTS.
Java 1.8 or Java 11
Java
Nummer
LTS* (Long Term Support)
Java SE 14
58
Java SE 13
57
Java SE 12
56
Java SE 11
55
Yes
Java SE 10
54
Java SE 9
53
Java SE 8
52
Yes
Java SE 7
51
Java SE 6.0
50 (0x32 hex),
Java SE 5.0
49 (0x31 hex),
JDK 1.4
48 (0x30 hex),
JDK 1.3td>
47 (0x2F hex)
JDK 1.2
46 (0x2E hex)
JDK 1.1
45 (0x2D hex)
* Der Begriff Long Term Support oder kurz LTS bezeichnet – vornehmlich im Open-Source-Kontext – langfristig unterstützte Software oder Betriebssysteme. Damit steht der Begriff sinnbildlich für Stabilität und Verlässlichkeit über einen langen, in der Regel fest definierten Mindestzeitraum hinweg.
LTS* (Long Term Support)
The term Long Term Support, or LTS for short, describes - primarily in the open source context - long-term supported software or operating systems. The term thus symbolizes stability and reliability over a long, usually firmly defined minimum period.
We explain you how to do stuff with Struts 1
Add Ajax and/or JSON support to you Struts application.
Dynamicly generate Excel-Documents out of you Struts application.
On 2013-04-05 the Apache Struts Project Team informed the comunity, that the Struts 1.x web framework has reached its end of life and is no longer officially supported.
STRUTS-support.com is trying to fill the gap. If you need Enterprise-Level-Support than...
Struts support of mobile devices
Struts support of html5
Securing your Application
If you use our modern Version
Sicherheitsmerkmale eines Cookies
HttpOnly
Secure
SameSite
Das Cookie mit dem Name JSESSIONID hat keines dieser Attribute.
Returning Binary Data with struts 1
In a default request-reply cycle in Struts, the view is implemented by a JSP-Page.
Usualy the content-Type is ...
If you want to create binary data e.g. a Excel-File or a PDF-File you got to do everything in the Action.
To avoid using any jsp simply return null after you are done.
Struts 1 based applications use the HTTP-POST methode in the repuest-response-loop.
jQuery gibt ja implizit das Cookie mit....
jQuery.post( "/laif/commons/client/excelJnlp.jsp", function( data ) {
alert( "Data Loaded: " + data );
});
Dynamicly create real Excel-Files
By real Excel-files we mean, that we do not create CSV-Files but xls ors xlsx-files.
Execute shell-Script in a JSP
Authentifizierung der JEE-Session über die URL
manchmal komm man die in verlegenheit einen html-link zu verwenden.
Dies kann unter umständen scheitern, wenn einen authentifizieren benötigt wird.
jee verwendet JSESSIONID als cookie um dem user zu tracken.
Manchmal kann man das Cookie aber nicht verwenden.
Wenn man jedoch den Browser verläßt und die Verantwortung an ein externes Programm delegiert (z.B. javaws) hat man ein Problem.
jee hat noch einen machanismus die jsessionid zu transportieren.
Es wirde einfach ;jsessionid=meineid an die url angehängt.
Das ist zwar irgendwie frech, da dies keinem der html-Standarts entspricht...
jnlp://localhost:8080/laif/dialog/9/menu/P/dokument/dmsJnlp.jsp;jsessionid=uhiyYbmvH0_XMYyjiPxbehrv7xBiybVJsdYb0Qks.dzs10n572
jQuery("iframe")[0].src = url;
P.S. damit ich das später wiederfinde sei hiermit erwähnt, dass die Anpassung in der dms.jsp erfolgt ist.
Scriptlet variablen der JSTL zur Verfügung stellen
Bisher wurden die Webseiten im Laif aus einer Mischung von Struts-Tags und Scriptlet entwickelt.
Seit 3/2020 kann man durch meine Umstellung nun auch JSTL verwenden.
Wenn man Daten aus einem Scriptlet verwenden will, so muss man diese zur Verfügung stellen.
Daraus läßt sich folgender Schluss zienen - Das Scriplet wird zuerst ausgeführt, dann erst kommt das JSTL.
Der Deployment-Descriptor weist die Anwendung als web-app_2_3.dtd aus.
Der Standart ist so alt, dass er leider als prähistorisch zu sehen ist. Auch die eingecheckten Tools (xdocklet)
Sind so konfiguriert, dass sie JEE 1.5 verwenden (siehe javaee-5.jar) . Das sind dann alles Dinge eingecheckt die
benötigt werden (z.B. javax.servlet.Servlet).
Wir habe es inzwischen auf Servlet 3.1 umgestellt.
J2EE v1.3 Servlets 2.3 aus dem Jahr 2002 - Servlet 2.3 comes with JSP 1.2 without EL. EL is to be provided by JSTL 1.0 and works in JSTL tags only.
J2EE 1.4 Ja (2.4) - Servlet 2.4 comes with JSP/EL 2.0. - JBoss EAP 4.3
JEE5 Ja (2.5) 11. Mai 2006 - Servlet 2.5 comes with JSP/EL 2.1.- JBoss EAP 5
JEE6 Ja (Servlet 3.0 - JSP2.2) 10. Dezember 2009 - Servlet 3.0 comes with JSP/EL 2.2 - JBoss EAP 6.
JEE7 Ja (Servlet 3.1 - JSP2.3) 12. Mai 2013 - Servlet 3.1 comes with JSP 2.3 and EL 3.0. - JBoss EAP 7
JEE8 Ja (Servlet 4.0 - JSP2.3) 18. September 2017 - JBoss EAP 7.2
JEE
Servlets/JSP
EL
Tomcat
Jboss
Oracle Weblogic
EJB
J2EE v1.3
Servlets - 2.3 aus dem Jahr 2002
Servlet 2.3 comes with JSP 1.2 without EL. EL is to be provided by JSTL 1.0 and works in JSTL tags only
4.1.X
unbekannt
EJB 2.0
J2EE 1.4
Servlets - 2.4)
Servlet 2.4 comes with JSP/EL 2.0.
5.5.X
JBoss EAP 4.3
EJB 2.1
JEE5
Servlets 2.5 - 11. Mai 2006
Servlet 2.5 comes with JSP/EL 2.1.
6.0.X
JBoss EAP 5
EJB 3.0
JEE6
(Servlet 3.0 - JSP2.2) 10. Dezember 2009
Servlet 3.0 comes with JSP/EL 2.2
7.0.X
JBoss EAP 6
EJB 3.1
JEE7
(Servlet 3.1 - JSP2.3) 12. Mai 2013
Servlet 3.1 comes with JSP 2.3 and EL 3.0.
8.5.X
JBoss EAP 7
WLS 12cR2
EJB 3.2
JEE8 Jakarta EE8
(Servlet 4.0 - JSP2.3) 18. September 2017
Servlet 4.0 comes with JSP 2.3 and EL 3.0.
9.0.X Java 8 and later
JBoss EAP 7.2
unbekannt
EJB
Jakarta EE9
Servlet 5.0 - JSP 3.0 - EL 4.0
10.0.X Java 8 and later
JBoss EAP Version
WildFly Version
JBoss EAP 6.0
JBoss AS 7.1
JBoss EAP 6.1
JBoss AS 7.2
JBoss EAP 6.2
JBoss AS 7.3
JBoss EAP 6.3
JBoss AS 7.4
JBoss EAP 6.4
JBoss AS 7.5
JBoss EAP 7.0
WildFly 10
JBoss EAP 7.1
WildFly 11
JBoss EAP 7.2
WildFly 14
JBoss EAP 7.3
WildFly 18
Servlet Spec
JSP Spec
EL Spec
WebSocket Spec
Authentication (JASIC) Spec
Apache Tomcat Version
Latest Released Version
Supported Java Versions
5.0
3.0
4.0
2.0
2.0
10.0.x
10.0.0 (beta)
8 and later
4.0
2.3
3.0
1.1
1.1
9.0.x
9.0.41
8 and later
3.1
2.3
3.0
1.1
1.1
8.5.x
8.5.61
7 and later
3.1
2.3
3.0
1.1
N/A
8.0.x (superseded)
8.0.53 (superseded)
7 and later
3.0
2.2
2.2
1.1
N/A
7.0.x
7.0.107
6 and later (7 and later for WebSocket)
2.5
2.1
2.1
N/A
N/A
6.0.x (archived)
6.0.53 (archived)
5 and later
2.4
2.0
N/A
N/A
N/A
5.5.x (archived)
5.5.36 (archived)
1.4 and later
2.3
1.2
N/A
N/A
N/A
4.1.x (archived)
4.1.40 (archived)
1.3 and later
2.2
1.1
N/A
N/A
N/A
3.3.x (archived)
3.3.2 (archived)
1.1 and later
Anpassung jnlp
In Laif werden an vielen Stellen jnlp-Files erzeugt.
Doch das ist nicht genug, der Dateiname bleibt dann mit der Endung .jsp.
Das hindert den Chrome allerdings die Datei mit JNLP auszuführen.
mit response.setHeader("Content-Disposition", "inline; filename=wsHdScanJnlp.jnlp"); setzen wird den
Namen auf eine jnlp-Endung. Dadurch ist dass dann für den Chrome OK.