FC2ブログ
一陣の神風が舞う
東北弁炸裂するショボプログラマの日々(´・ω・`)
10 | 2019/11 | 12
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

StrutsのリクエストやActionFormの文字列が文字化けしてしまう

リクエストやActionForm等から取得したマルチバイト文字列の文字化け対応のStruts版メモ。
とりあえず弄ってみた感じでは文字化けそのものの原因は この辺のネタと同じっぽいので、 この記事は回避策をメインで。


対応手順

参考URLを見てもらってもOKですが、Strutsは下図のようなしくみでクライアントからのリクエストを処理しているらしい。

Strutsのリクエスト処理
1. クライアントからリクエストが投げられる
2. struts-config.xmlのforward pathで指定したActionクラスのexcuteメソッドが呼ばれる
3. 処理が返る(気にしなくてOK)
4. 処理結果が返る

A-B. タイミングは分らんけど、1~4の処理を行う時にはA, Bの処理が予め終わっている模様

そこで、以下の手順により文字化けに対応する。
・マルチバイト文字列に対応していないActionServletをサブクラスで拡張する
・web.xmlを書き換えて、↑で作ったサブクラスをStrutsデフォルトのActionServletと差し替える

ActionServletのサブクラスを作成

まあ、作り方もヘッタクレもないのでそのまんま。文字コード指定してprocessメソッドを叩くだけ。

package junk;
public class NeoActionServlet extends ActionServlet
{
        protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
        {
                request.setCharacterEncoding("UTF-8");
                super.process(request, response);
        }
}

web.xmlを書き換え

通常Strutsを使う場合は、

<web-app> 
        <servlet> 
                <servlet-name>action</servlet-name>
                <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
                <init-param>
                        <param-name>config</param-name>
                        <param-value>/WEB-INF/struts-config.xml</param-value>
                </init-param>
                …(中略)…
        </servlet>
</web-app>
こんな感じでweb.xmlを記述するけど、それを↓のようにする。作ったサブクラスにしただけっスねd(・x・;)
<web-app>
        <servlet>
                <servlet-name>action</servlet-name>
                <!--
                <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
                -->
                <servlet-class>junk.NeoActionServlet</servlet-class>
                <init-param>
                        <param-name>config</param-name>
                        <param-value>/WEB-INF/struts-config.xml</param-value>
                </init-param>
                …(中略)…
        </servlet>
</web-app>
以上です。

それにしても…まだStrutsを使いこなせてないなあ…。どーしても鬱陶しいと思ってしまうよω
|・x・)ノシ <ンジャマタ


参考:特集:第1回 フレームワーク「Struts」の基礎を知る (4/8)

テーマ:プログラミング - ジャンル:コンピュータ

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://ciablo.blog70.fc2.com/tb.php/96-0d2375de
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Mahny

Author:Mahny
趣味PG派生の職業PG(+SE?)。頭のデキはきっと残念ω

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

ペット