[Java EE] Jak usuwać białe znaki z plików widoków?
Zadanie na dzisiejszy wieczór brzmi dość trywialnie. Znaleźć sposób na usuwanie białych znaków z plików widoków. Czemu to ma służyć? Przede wszystkim zmniejszeniu rozmiarów plików, czyli w najogólniejszym skrócie szybszemu ładowaniu stron.
Pierwsza myśl to skorzystanie z dyrektywy trimSpaces serwera Tomcat. Niestety włączenie tej opcji spowoduje usunięcie białych znaków tylko w obrębie tagów JSTL, jeśli w ogóle zadziała…
Można również skorzystać z odpowiednich filtrów do serwletów np. JTidy
Ja chciałbym przedstawić rozwiązanie z wykorzystaniem Ant-a i taska: replaceregexp – służącego do zamiany znaków w pliku lub zbiorze, za pomocą wyrażeń regularnych.
Po kilkunastu minutach przeglądania dokumentacji Anta, dodałem do swojego pliku build.xml nowe zadanie:
<target name="trim"> <echo message="trim!"/> <fileset id="xhtml.fileset" dir="${build.web.dir}" includes="**/*.xhtml"/> <replaceregexp match="[\n\r]" replace="" flags="g" byline="false"> <fileset refid="xhtml.fileset"/> </replaceregexp> <replaceregexp match="[\s+]" replace="" flags="g" byline="true"> <fileset refid="xhtml.fileset"/> </replaceregexp> </target>
Na początku definiujemy zbiór plików, na którego elementach będziemy wykonywać operacje. Potem dwukrotnie korzystamy z replaceregexp z odpowiednimi wyrażeniami regularnymi na określonym wcześniej zbiorze.
Jakie są zalety powyższego rozwiązania? Nie wymaga instalacji żadnych dodatkowych bibliotek. Po drugie nie angażujemy do tej operacji serwera. Po trzecie usuwanie znaków wykonujemy raz w momencie deployowania aplikacji na serwer. Na koniec oczywistość: nasze oryginalne pliki pozostają bez zmian.
PS. Regułki wyrażenia regularnego mogą nie być wyjątkowo optymalne, zależało mi przede wszystkim pokazaniu idei rozwiązania problemu.

