- JSPやポートレットの日本語が文字化けする。
- 画面からPostした日本語が文字化けする。
対策としては、普通のWEBアプリ同様エンコードをUTF-8に統一すればOK。
今回、その対象となるのが、Plutoのフロントエンドとなるplutoアプリ。
この、plutoアプリのweb.xmlを修正する。
つまり、pluto-2.0.3/webapps/pluto/WEB-INF/web.xmlを修正する。
修正したのが下記XML。
修正内容としては、変更や削除は何もなく、サーブレットパラメータとエンコーディングフィルタの追加のみ。
- 青文字が、JSPやポートレットの文字化け対策。
plutoPortalDriverサーブレットのcharsetパラメータにUTF-8を指定する。
参考情報
Pluto - Frequently Asked Questions
http://portals.apache.org/pluto/faq.html
How can I change the default encoding of the Pluto Portal
- 赤文字が、Postした日本語の文字化け対策。
Tomcatが持ってるエンコーディングフィルタを使って、ブラウザと送受信するデータをUTF-8と指定する。
昔はサンプルだったのに、いつのまにやら本体に入ってたのね。
[web.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Apache Pluto Portal Driver</display-name>
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/pluto-portal-driver-services-config.xml</param-value>
</context-param>
<filter>
<filter-name>plutoPortalDriver</filter-name>
<filter-class>org.apache.pluto.driver.PortalDriverFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>plutoPortalDriver</filter-name>
<url-pattern>/about.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>plutoPortalDriver</filter-name>
<url-pattern>/about.jsp/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.apache.pluto.driver.PortalStartupListener</listener-class>
</listener>
<servlet>
<servlet-name>plutoPortalDriver</servlet-name>
<display-name>Pluto Portal Driver</display-name>
<description>Pluto Portal Driver Controller</description>
<servlet-class>org.apache.pluto.driver.PortalDriverServlet</servlet-class>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet><servlet>
<servlet-name>plutoPortalDriverLogout</servlet-name>
<display-name>Pluto Portal Driver</display-name>
<description>Pluto Portal Driver Logout</description>
<servlet-class>org.apache.pluto.driver.PortalDriverLogoutServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>portletApplicationPublisher</servlet-name>
<display-name>Portlet Application Publisher</display-name>
<description>Portlet Application Publisher Service</description>
<servlet-class>org.apache.pluto.driver.PublishServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>tckDriver</servlet-name>
<display-name>Pluto TCK Driver</display-name>
<description>Pluto TCK Driver Controller</description>
<servlet-class>org.apache.pluto.driver.TCKDriverServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AboutPortlet</servlet-name>
<servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>AboutPortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AdminPortlet</servlet-name>
<servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>AdminPortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>PlutoPageAdmin</servlet-name>
<servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>PlutoPageAdmin</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>plutoPortalDriver</servlet-name>
<url-pattern>/portal/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>plutoPortalDriverLogout</servlet-name>
<url-pattern>/Logout</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>portletApplicationPublisher</servlet-name>
<url-pattern>/admin/Publish</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tckDriver</servlet-name>
<url-pattern>/tck/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AboutPortlet</servlet-name>
<url-pattern>/PlutoInvoker/AboutPortlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminPortlet</servlet-name>
<url-pattern>/PlutoInvoker/AdminPortlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>PlutoPageAdmin</servlet-name>
<url-pattern>/PlutoInvoker/PlutoPageAdmin</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://portals.apache.org/pluto</taglib-uri>
<taglib-location>/WEB-INF/tld/pluto.tld</taglib-location>
</taglib>
<security-constraint>
<web-resource-collection>
<web-resource-name>portal</web-resource-name>
<url-pattern>/portal</url-pattern>
<url-pattern>/portal/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>pluto</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login.jsp?error=1</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>pluto</role-name>
</security-role>
</web-app>
0 件のコメント:
コメントを投稿