2013-02-21 13 views
5

Czy jest coś bezpieczniejszego niż JSP? Nie znalazłem żadnych sensownych odpowiedzi za pośrednictwem Google. Obecnie używamy platformy Spring MVC i JSP do renderowania HTML. Znienawidziłem dynamiczną naturę renderowania JSP, ponieważ odwołujesz się do modelu takiego jak ${model.someAttribute}, ale nie masz możliwości określenia, czy ten atrybut jest dostępny w danym module, czy określa typ modelu oczekiwanego przez szablon. Stworzenie modeli staje się bardzo trudne, ponieważ Eclipse nie wie, które szablony korzystają z modelu, a także nie może powiązać modułów pobierających z akcesoriami właściwości w szablonach.Dowolne Typowe alternatywy dla szablonów JSP

Czy istnieje technologia szablonowa, która jest zarówno mniej brzydka, jak wypluwanie kodu HTML za pomocą imperatywnego kodu i więcej typów/kompilacji bezpieczniejszych niż JSP?

+0

może wypróbować IntelliJ? – irreputable

+0

@irreputable, czy to w jakiś sposób wspiera refaktoryzację nazw właściwości fasoli i zajmuje się również szablonami? – d56

Odpowiedz

0

Lift (na podstawie Scala) oferuje bardzo ładny model z dobrym oddzieleniem układu HTML od rzeczywistego kodu aplikacji (zwanego snippets). Podczas gdy bariera wejścia może początkowo wyglądać na wysoką, zyski są naprawdę duże w nieco dłuższym okresie. Jedną dużą zaletą jest to, że działa na JVM, dzięki czemu można ponownie korzystać z większości bibliotek Java i innych kodów.

+0

Wygląda na to, że nie jest bezpieczny w kompilacji, czy też istnieją narzędzia, które zapewniają, że nie uzyskujesz dostępu do niezdefiniowanej właściwości i narzędzi, które pomagają podczas refakturowania nazw właściwości? – d56

+0

@ d56 W rzeczywistości tak jest. W swoim HTML wystarczy zaznaczyć elementy, które aplikacja powinna dynamicznie wypełniać specjalnymi klasami lub identyfikatorami CSS. Kod, który je wypełnia, jest zwykłym kodem Scala, który kompilator i twój IDE potwierdzają w pełnym zakresie, łącznie z bezpieczeństwem typu. –

0

Uważam, że cele z zakresu bezpieczeństwa i bezpieczeństwa modeli typu XSS zostały zaprojektowane tak, aby ułatwić przejście z JSP.

Opis ich wyjaśnia, że ​​ich wyrażenia są bardziej zbliżone do wyrażeń Javy, więc otrzymasz błędy typu Java-esque, jeśli twoje wyrażenia zawierają niezgodność typów.

+0

Problemem OP jest obsługa narzędzi do analizy statycznej, refaktoryzacji, uzupełniania kodu itd. – irreputable

+0

@irreputable, interpretowałem "zastanawiałem się, czy jest coś bezpieczniejszego niż JSP ..." i "Powinna być jakaś bardziej statyczna technologia szablonowania tam ... ", pytając o alternatywę dla JSP. Jeśli uważasz, że jestem w błędzie, poproś plakat o wyjaśnienia. –

2

Możesz użyć wskazówek typu, np. type attribute w jsp: useBean oraz w deklaracjach atrybutów plików znaczników JSP (i prawdopodobnie w innych miejscach, takich jak znaczniki JSTL). IntelliJ następnie zrobi dla Ciebie wszystkie dobre rzeczy oparte na statycznych typach (dokładne sugestie dotyczące uzupełniania kodu, refaktoryzacja, znajdowanie zastosowań, szybkie wyświetlanie javadoc itp.).

Niedawno napisałem o tym w kontekście JSP tag files.

0

Właściwie go nie używałem, ale Twirl (https://www.playframework.com/documentation/2.5.x/JavaTemplates) nazywa się "bezpiecznym szablonem silnika opartym na Scali" (można go najwyraźniej użyć w Play for Java).

Cytat:

Bezpieczny typ silnika szablon na podstawie Scala Gra pochodzi z Wirówka, potężny Scala opartej na silniku szablonu, którego konstrukcja została zainspirowana ASP.NET Razor. W szczególności:

Kompaktowy, ekspresyjny i płynny: minimalizuje liczbę znaków i naciśnięć klawiszy w pliku oraz umożliwia szybki, płynny proces kodowania. W przeciwieństwie do większości składni szablonów, nie trzeba przerywać kodowania, aby wyraźnie oznaczać bloki serwera w kodzie HTML. Analizator składni jest wystarczająco inteligentny, aby wywnioskować to ze swojego kodu. Umożliwia to naprawdę kompaktową i ekspresyjną składnię, która jest czysta, szybka i przyjemna w pisaniu.

Łatwy do nauczenia: pozwala szybko uzyskać produktywność, przy minimum pojęć. Używasz prostych konstrukcji Scala i wszystkich istniejących umiejętności HTML.

nowy język: świadomie postanowiliśmy nie tworzyć nowego języka. Zamiast tego chcieliśmy umożliwić programistom Scala korzystanie ze swoich istniejących umiejętności językowych Scala i dostarczenie składni znaczników szablonów, która umożliwia niesamowitą pracę nad budową HTML.

edytowalny w dowolnym edytorze tekstu: nie wymaga określonego narzędzia i pozwala być wydajnym w zwykłym starym edytorze tekstu.