Heiner KückerJspCheck |
|
Home Java-Seite Bit Packed Array ASM Improved heterogene Map, HMap Constraint Code Generator JSP WorkFlow PageFlow FlowControl Page Flow Engine Web Flow Engine Control_and_Command JSP_Spreadsheet Code-Generator für Option-Either-Stil in Java verbesserter Comparator Fluent-Interface Code-Generator auf Basis einer Grammatik Visitor mit Multidispatch for-Schleife mit yield-return Kognitions-Maschine semantisches Netz Domain Parser Codegenerator_für hierarchische Datenstrukturen Expression_Engine Formula_Parser Thread Preprocessor State Transition Engine AspectJ Java_Explorer DBF_Library Kalender_Applet SetGetGen BeanSetGet CheckPackage LineNumbers GradDms Excel-Export StringTokenizer JspDoc JspCheck JSP-Schulung Java Server Pages Struts Ascii-Tabellen- Layouter Ascii-Baum- Layouter Ascii-Art-Fluss- Diagramm- Parser AsciiArt AssignmentMatrix Layouter StringSerial Silbentrennung JDBC_Schlüssel- Generierung bidirektional/ unidirektional gelinkte Liste Java_Sitemap Generator XmlBuilder RangeMap StringFormatter VersionSafe XCopy JTextField CommandLine- ParamReader Bitmap-Grafik MultiMarkable- Buffered- InputStream JavaCache JdomUtil CollectionUtil XML Really Pull Parser Log-Filter Remote-Protokoll Sudoku-Generator Delegation statt Mehrfachvererbung Disjunct Interval Set WebCam_Demo Weiterentwicklung_Java Alaska-XBase++-Seite Projekte Philosophien Techniken Konzepte Sudoku Kontakt / Impressum Links SiteMap Letzte Aktualisierung: 21.06.2003 |
JspCheck
Tool zum Prüfen der Syntax von in Java Server Pages eigelagerten Java-Code (Scriptlets). In einem meiner letzten Projekte hatte ich die Aufgabe eine vorhandene JSP- Applikation zu erweitern und einige Bugs zu fixen. JSP-Engine war der WebSphere 3.5.6, der aber auf einem anderen Rechner als der Entwicklungsmaschine lief. Normalerweise sollten JSP-Seiten weitgehend frei von Code sein. Dafür nimmt man TagLibs. Leider waren die vorhanden JSP-Seiten voller Script-Code. Nur die <jsp:usebean>-Tags wurden verwendet. Beim Entwickeln habe ich die geänderten JSP´s auf den WebSphere-Rechner kopiert, WebSphere gestoppt, WebSphere gestartet und mich dann in der Applikation zur entsprechenden Seite durchgeklickt. Oh Pech, eine schliessende Klammer oder ein Semikolon vergessen! Nochmal das ganze. Nach ein paar Tagen hatte ich das satt. Da kam ich auf die Idee, mir ein kleines Tool, JspCheck, zu schreiben. Es arbeitet folgendermassen: Die Arbeitsweise von JspCheckJspCheck durchläuft das per Parameter übergebene JSP-Verzeichnis rekursiv und parst die JSP-Dateien ein.In den JSP-Dateien sucht JspCheck nach: - Scriptlet-Sequenzen <% ... %> - Page-Direktiven <%@ page import="com.firma.niederlassung.abteilung.project.*" %> import (Namensraum) <%@ include file = "incl.jsp" %> File-Include (noch nicht implementiert) - JSP-Tags <jsp:useBean /> Nutzung Java-Bean <jsp:getProperty /> Bean-Getter <jsp:setProperty /> Bean-Setter (nur für String-Setter, ohne param-Attribute) Aus den geparsten JSP-Dateien werden im per Parameter übergebenen Source-Verzeichnis entsprechende temporäre Java-Dateien mitsamt Sub-Pfad angelegt. Als Klassen-Name wird der Name der JSP-Datei verwendet. Das Package entspricht dem Pfad der JSP-Datei. Diese werden dann mit javac kompiliert, wodurch eine Syntaxprüfung erfolgt. Um laufend zu prüfen, wird JspCheck in das Build-Tool Ant eingebunden. Mit Ant kann man auch die temporären Dateien/Verzeichnisse löschen. Konfigurations-ParameterAls Startparameter sind nötig:-JSP-Verzeichnis -Ziel-Verzeichnis in welches die temporären Java-Quell-Klassen abgelegt werden -Package für die generierten java-FilesIm Zielverzeichnis wird ein weiterer dem Package entsprechender Unterpfad angelegt. Hier ein Beispiel: -Ziel-Verzeichnis G:\javaprog\src -Package de.jspcheck -JSP-Datei web\html\form.jspDaraus entsteht der engültige Pfad: G:\javaprog\src\de\jspcheck\html\form_jsp.javamit dem Package: de.javaprog.JSP.purchase ProblemeDie Namen der erzeugten Java-Klassen müssen die Restriktionen für Java- Identifier erfüllen:
Einbindung in ANTDer Aufruf von JspCheck wird in das compile-Target gelegt. Ein Target ist eine auszuführende Aufgabe, die aus mehreren Kommandos, in ANT heissen die Kommandos Tasks, besteht. Am einfachsten ist ein Target mit einer Prozedur vergleichbar. In ANT ist es über den Build-In-Task <java> möglich, Java-Programme zu starten. Darüber wird JspCheck ein- oder mehrmals gestartet um die temporären Klassen zu erzeugen. Danach wird der javac-Task aufgerufen. Im aufgelisteten Beispiel wird das Ant-Script im Sinne einer Script-Strukturierung in ein compile-Target und ein init-Target aufgeteilt.<!-- =================================================================== --> <!-- Initialization target --> <!-- =================================================================== --> <target name="init"> <!-- jspcheck parameters --> <property name="jspcheckprog.dir" value="../jspcheck"/> <property name="jsp.dir" value="./web"/> <property name="jspcheckdest.dir" value="./src"/> <property name="jspcheck.package" value="de.jspcheck"/> <property name="jspcheck.tempdir" value="${jspcheckdest.dir}\de\jspcheck"/> </target> <!-- =================================================================== --> <!-- Compiles the source directory --> <!-- =================================================================== --> <target name="compile" depends="prepare"> <!-- Aufruf jspcheck fuer JSP-Dateien --> <echo message="*********** jspcheck ${jsp.dir} ***********"/> <delete dir="${jspcheck.tempdir}"/> <!-- temporaere java-Files loeschen --> <java classname="JspCheck" fork="true" failonerror="true"> <classpath> <pathelement path="${jspcheckprog.dir}"/> </classpath> <arg value="${jsp.dir}"/> <arg value="${jspcheckdest.dir}"/> <arg value="${jspcheck.package}"/> </java> <javac srcdir="${build.src}" destdir="${build.dest}" debug="on" classpath="${classpath}" optimize="${optimize}"/> <fileset dir="${src.dir}"> <include name="**/*.properties"/> <include name="**/*.xml"/> </fileset> </target> Download der Quelldateien JspCheck.zip Voraussetzung zum Nachvollziehen der Beispiele ist die Installation eines JDK und des ANT-Build-Tools. Die Umgebungsvariablen JAVA_HOME und ANT_HOME müssen in der Windows-Systemsteuerung oder entsprechenden .profile-Files richtig gesetzt sein. Danach sollte der Aufruf des ANT-Starters build.bat funktionieren. Installation: Entpacken in Verzeichnis Ihrer Wahl (z.B. G:\jspcheck) Start mit build.bat. Die Abbildung zeigt die erforderliche Verzeichnis-Struktur
Achtung: Erweiterungen und Fixes stelle ich ohne Historie
und ohne Ankündigung hier bereit. Lizenzbedingungen:
Die Programme, Quelltexte und Dokumentationen können ohne
irgendwelche Bedingungen kostenlos verwendet werden. |