GSPページのエンコードの問題を解決する(Grailsなし)

ある時点で、比較的重いGrails MVCフレームワークを使用せずに、PHPをWeb用のGroovyに完全に100%置き換えることができないという顕著な問題が1つありました。



これは、* .gspページ(Groovy Server Pages)に適用されます。これは、GroovyまたはJava、または元の言語の任意のコードを含む<%...%>の形式のHTMLページです。 JavaServer Pages)。







PHPのまったく同じ機能がinserts <?...?>によって実装されます(さらに、PHPの場合、クラスまたはビジネスロジックを実装する場合でも、そのようなブロックの存在は必須です。そのようなブロックの後に通常、不可視のスペースまたは改行がある場合、問題につながる可能性があります)。



グルーブサイトでは、「 GSPはスタンドアロンモジュールとして維持されていません。しかし、Grailsでフォークされ、再統合されています。」 しかし、それでも、グルーブサーブレットのように、gspページはGrailsなしで動作し、グルーブをアプリケーションに接続するだけです。



問題は、これらのgspページでロシア語のテキストが「曲がった髪」に変わったことでした。 「実際の」タイプとスクリプトタイプの両方のグルーブサーブレットでは、これは観察されませんでした。



科学的な突刺の方法により、ソースgspがシステムのデフォルトのエンコーディング(Windowsの場合はcp1251など)に転送された場合、問題は解決されることが判明しました(さらに、ページはすでにUTF-8に出力されています)。



これは純粋なヒントです。このようなページの解析を担当するサーブレットgroovy.servlet.TemplateServlet.javaのソースに移動し、そこで行を見つけます。



private static final String GROOVY_SOURCE_ENCODING = "groovy.source.encoding";
      
      







また、このパラメーターがReaderのインスタンスの作成にどのように影響するかを示します。



アプリケーションのweb.xmlで値「UTF-8」を使用してパラメータをサーブレットに書き込むと、問題は解決します。



web.xmlアプリケーションの全文。任意の* .groovyおよび* .gspファイルがすべてサーブレットにコンパイルされ、キリル文字が正しく出力されます。



 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>GroovyServlet</servlet-name> <servlet-class>groovy.servlet.GroovyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GroovyServlet</servlet-name> <url-pattern>*.groovy</url-pattern> <url-pattern>*.grv</url-pattern> </servlet-mapping> <servlet> <servlet-name>GSP</servlet-name> <servlet-class>groovy.servlet.TemplateServlet</servlet-class> <init-param> <param-name>groovy.source.encoding</param-name> <param-value>UTF-8</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>GSP</servlet-name> <url-pattern>*.gsp</url-pattern> </servlet-mapping> </web-app>
      
      







また、URLで「グロー」する長い.groovy拡張子を、たとえば.grv(または.php-わずか4 fun)などの任意の短い拡張子に置き換える方法も示します。



GroovyでWebサイト、Webアプリケーション、フレームワークを迅速かつ簡単に作成できるようになりました。サーバーにJavaとTomcatをインストールするだけで済みます。



All Articles