fc2ブログ

ブラウザからこんにちは





ブラウザから「HelloWorld」と出力するサーブレットを作りましたが、今回は、「こんにちは」と出力します。

「HelloWorld」を「こんにちは」に変更するだけでいけそうな気がしますが、実はそうではありません。

ためしに、前に作ったHelloWorld.javaのファイルの「HelloWorld」の部分を「こんにちは」と変更して出力してみてください。

「こんにちは」ではなく、

?????


と出力されたと思います。

今回の課題は、このようなエラーが出ないようにして日本語出力を行うことです。



サーブレットで日本語を出力できるようにするには、そのための指定を行わなければなりません。そのためには、setContentType()というメソッドを使ってコンテンツタイプを指定します。

setContentType()メソッドには、2つの引数を指定できます。1つ目がMIMEタイプ、2つ目が文字エンコーディングです。

MIMEタイプとは、インターネット上でやり取りされるデータの種類のことです。テキストファイルとかHTMLファイルなどです。今回はテキストを指定します。

MIMEタイプでテキスト形式を指定するときは、
  text/plain
と表記します。

次に文字エンコーディングですが、出力する文字の種類のことです。Tomcatではデフォルトの文字エンコーディングが欧米で使われている文字コードのISO-8859-1に設定されており、このままでは日本語表記ができないのです。

文字エンコーディングはいくつかありますが、ここでは一般的と思われる「Windows-31J」を指定します。

MIMEタイプと文字エンコーディングが理解できたところで、ブラウザからの応答を表すdoGet()メソッドの引数 responseにsetContentType()メソッドで以下のように指定します。
  response.setContentType("text/plain; charset=Windows-31J");

この一行を入れることで、やっと日本語出力が可能になります。


import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class Konnichiwa extends HttpServlet{

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/plain; charset=Windows-31J");

PrintWriter out=response.getWriter();
out.println("こんにちは");
}
}


javaファイルを作るだけでなく、web.xmlのファイルに以下のソースを追加しておきましょう。


<servlet>
<servlet-name>Konnichiwa</servlet-name>
<servlet-class>basic.Konnichiwa</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Konnichiwa</servlet-name>
<url-pattern>/Konnichiwa</url-pattern>
</servlet-mapping>


出来上がったら、
  http://localhost:8080/siroto/Konnichiwa
にアクセスして確認してください。
スポンサーサイト



タグ :

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://servletmania.blog137.fc2.com/tb.php/3-319b48cc
月別アーカイブ
カテゴリ
リンク
RSSリンクの表示
QRコード
QR