【Java】JSPでタグライブラリを使う(JSTL)
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。エンジニアの新田です!
ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。
今回は、サーブレットでのエンコーディング指定について解説します。エンコードの設定に誤りがあると文字化けが発生する原因になりますので、しっかり理解しておきましょう。
関連記事:【Java】Webアプリケーションとは? 【Java】サーブレット(Java Servlet)
ここでは、サーブレットで扱う文字エンコードを対象に説明します。
文字エンコードとは、「UTF-8」や「Shift-JIS」のように、文字コード体系を指すものです。クライアント側で表示するHTMLやサーバー側で管理しているデータベースにも文字エンコードが指定されており、クライアントやデータベースとの間で処理を行うサーブレットは文字エンコードを意識して実装する必要があります。
文字エンコードには以下のようなものがあります。
Javaはデフォルトで内部処理をUnicodeベースで行なうのに対し、クライアントから送信されてくるリクエストは、Shift-JISやEUC-JPのような文字エンコードです(HTMLで指定されている文字エンコード)。
このとき、サーブレット側で自動で文字コードの変換は行われないため、何もしなければ文字コードの不整合が発生し、文字化けが発生する原因となります。
そこで、リクエストデータにマルチバイト文字が含まれている可能性がある場合は、意図的にリクエストデータで使用されている文字エンコードを指定する必要があります。
今回は、サーブレットで文字エンコード指定を考慮する必要があるポイントとして、以下の2点について説明します。
Javaサーブレットでは以下の2つの方法で出力時のエンコーディング指定が可能です。
※何れの場合も実行の順番に注意。必ずgetWriterメソッドの前に実行すること。
1.responseオブジェクトのsetCharacterEncodingメソッドで文字コードを指定する。
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
2.responseオブジェクトのsetContentTypeメソッドで 文字コードを指定する。
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
引数にコンテントタイプを表す文字列を指定("{MIMEタイプ指定};charset={エンコーディング指定}")
※MIMEタイプとは、Web上でやり取りされるデータの種類のこと。
Javaサーブレットでは以下の方法でリクエストパラメータ取得時のエンコーディング指定が可能です。
※実行の順番に注意。必ずgetParameterメソッドの前に実行すること。
request.setCharacterEncoding("UTF-8");
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
※リクエストパラメータが複数の場合は初めに一度だけ実行すればよい。
Javaサーブレットのフィルタ機能を使って、エンコーディングを一括して指定することができます。
フィルタとはサーブレットがリクエストを受け取る前、サーブレットがレスポンスを返した後に何らかの処理を挟むことができる機能です。
フィルタはeclipseのウィザードを使うことで簡単に作ることができます。設定内容等の詳細についてはフィルタ機能の記事で紹介します。
実際のコードサンプルを紹介しますが、サーブレットに処理を渡す前に、以下のように処理を挟むことができます。ここではrequestと responseにそれぞれエンコーディングを指定しています。
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// pass the request along the filter chain
chain.doFilter(request, response);
}
これにより、実際のサーブレット側ではその都度エンコーディングの指定をする必要がなくなります。
今回紹介したのは、リクエストデータ受け取りと、レスポンスデータ出力でのエンコーディング指定でしたが、実際のシステムではデータベースやサーバー上のファイルなど様々な場所で文字エンコードが指定されています。文字エンコーディングがどのようなものなのか、なぜ文字化けが発生するのかを理解しておきましょう。
関連記事:【Java】Webアプリケーションとは? 【Java】サーブレット(Java Servlet)
【著者】
JavaメインのWebアプリケーション開発に多く携わっています。
Javaの基本的な部分の紹介や、これまで経験したシステム開発手法、新しい技術についても紹介していこうと思います。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様