9

従来の Spring MVC アプリケーションで、JSP/JSTL ビューの代わりに GSP ビューを使用したいと考えています。次のように、groovy.servlet.TemplateServlet を web.xml に追加しました。

<servlet>
    <servlet-name>GroovyTemplate</servlet-name>
    <servlet-class>groovy.servlet.TemplateServlet</servlet-class>
    <init-param>
            <param-name>template.engine</param-name>
            <param-value>groovy.text.GStringTemplateEngine</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyTemplate</servlet-name>
    <url-pattern>*.gsp</url-pattern>
</servlet-mapping>

そして、Spring InternalResourceViewResolver をセットアップして GPS ファイルをロードします。ここまでは問題なく動作しますが、Model の値をテンプレートに公開するには、いくつかのトリック (TemplateServlet をサブクラス化し、それらを ServletBinding に追加する) を行う必要がありました。

次の障害は、c:out タグを使用すると JSTL がデフォルトで XML をエスケープし、Grails には GSP で使用される値を自動的にエスケープするコーデックの概念があることです。上記のテンプレート メソッドはデフォルトではエスケープしないため、開発者は XSS の脆弱性を回避するために細心の注意を払う必要があります。

Grails を使用せずにプレーンな Spring MVC アプリケーションで自動エスケープを含む GSP を使用する別の (より良い) 方法はありますか?

4

3 に答える 3

0

Grails から GSP を抽出し、Spring MVC アプリケーション用にカスタマイズし、構成サポートを改善しました。ツールRabbtorを参照してください。オープンソースでは提供していませんが、使用は無料で、独自のアプリケーションで使用しています。Spring Boot の GSP は Spring Boot に依存しており、メンテナンスされておらず、一部のタグ ライブラリは Grails に依存しています。これらの依存関係を取り除き、Spring MVC アプリにより適した独自のカスタム タグ ライブラリを作成しました。ほとんどのタグ ライブラリがサポートされており、Spring JSP タグと同様の実装があります。データ バインドされたフォーム タグ ライブラリが提供され、タグ ライブラリまたはタグ ライブラリを登録することもできます。パッケージ。

于 2016-06-10T18:56:09.650 に答える
0

を使用する代わりに、その目的で をTemplateServlet使用することもできます(テストはしていません。Grails のweb.xmlとクラスのコードを見ただけです)。 後者では、Spring Bean をセットアップし、名前を付け、型を指定する必要があります(この場合)。GroovyPagesServlet
groovyPagesTemplateEngineGroovyPagesTemplateEngineGStringTemplateEngine

でビューレイヤーを構成することInternalResourceViewResolverは正しいです。が割り当てられますGroovyPageView

デフォルトでは、GSP はHTML 出力エスケープを実行するように構成されていません。これを構成するには、Config.groovygrails.views.default.codecでからnoneに変更します。詳細については、この記事を参照してください。html

于 2010-11-27T14:37:38.420 に答える