JSTLのfmt:requestEncodingタグでフォーム送信データの文字エンコーディングを指定する方法
<fmt:requestEncoding>タグとは
<fmt:requestEncoding>タグは、Webアプリケーションへフォームからデータをポストバック(送信)する際に使用される文字エンコーディングの種類を指定するためのJSTLタグです。フォームから送信されたデータを正しくデコードしたい場合に、このタグを使用します。
属性
<fmt:requestEncoding>タグには、以下の属性が用意されています。
| 属性 | 説明 | 必須 | デフォルト値 |
|---|---|---|---|
| key | リクエストパラメータをデコードする際に適用する文字エンコーディングの名前 | はい | なし |
このタグは、ISO-8859-1以外の文字エンコーディングを扱う場合に必ず使用する必要があります。なぜなら、ほとんどのブラウザはリクエスト時にContent-Typeヘッダーを含めないため、サーバー側で明示的にエンコーディングを指定しないと文字化けが発生してしまうからです。
ページディレクティブとの関係
<fmt:requestEncoding>タグの目的は、リクエストのコンテンツタイプを指定することにあります。レスポンスを生成するページのエンコーディングが、pageディレクティブのcontentType属性で指定されていたとしても、リクエスト側のコンテンツタイプは別途指定しなければなりません。
その理由は、レスポンスの実際のロケール(したがって文字エンコーディングも)が、pageディレクティブで指定した値と異なる可能性があるためです。
特に注意が必要なのは、ページ内にI18N対応のフォーマット処理が含まれている場合です。ServletResponse.setLocale()を呼び出してレスポンスのロケール(および文字エンコーディング)を設定するアクションが存在すると、pageディレクティブで指定されたエンコーディングは上書きされてしまいます。
使用例
以下は、<fmt:requestEncoding>タグを使ってUTF-8を指定し、スペイン語(es_ES)ロケールのメッセージを表示するサンプルコードです。
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "https://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
<html>
<head>
<title>JSTL fmt:requestEncoding タグの例</title>
</head>
<body>
<fmt:requestEncoding value = "UTF-8" />
<fmt:setLocale value = "es_ES"/>
<fmt:setBundle basename = "com.tutorialspoint.Example" var = "lang"/>
<fmt:message key = "count.one" bundle = "${lang}"/><br/>
<fmt:message key = "count.two" bundle = "${lang}"/><br/>
<fmt:message key = "count.three" bundle = "${lang}"/><br/>
</body>
</html>上記のコードを実行すると、以下のような結果が出力されます。
Uno Dos Tres
このように、<fmt:requestEncoding>タグを適切に配置することで、多言語対応のWebアプリケーションにおいてもフォームから送信されるデータを正しい文字エンコーディングで解釈でき、文字化けを防ぐことができます。
-
【Android】セカンドアクティビティからメインアクティビティへデータを返す方法を解説
このチュートリアルでは、Androidアプリにおいてセカンドアクティビティからメインアクティビティへデータ(処理結果)を返す方法を、サンプルコードを交えて解説します。2つの数値を入力して別画面へ渡し、その画面での計算結果を元の画面に表示させるアプリを例に、データ受け渡しの基本を学びましょう。ポイントは startActivityForResult() と onActivityResult() の2つです。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力して新しいプロジェクトを作成します。 ス
-
TensorFlowとPythonでデータをモデルに適合させる方法:fitメソッドの基本
TensorFlowでは、「fit」メソッドを使用することで、データをモデルに適合させることができます。本記事では、転移学習を活用した画像分類モデルの構築を例に、fitメソッドの基本的な使い方を解説します。転移学習とは何か少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれ、学習モデルの構築に広く活用されています。画像分類における転移学習(Transfer Learning)の考え方は、「大規模で汎用的なデータセットで学習済みのモデルは、視覚世界における汎用モデルとして効果的に機能する」というもので