MIMEタイプの違いによる出力の違いを確認しよう

5.2 MIMEタイプの違いによる出力の違いを確認しよう

 ここではMIMEタイプの設定による出力の違いを確認します。同じ処理を行うプログラムを2つ作成し、片方のMIMEタイプを「text/plain」、もう片方のMIMEタイプを「text/html」と指定して、出力結果の違いを確認してみましょう。

MIMEタイプをtext/plainとしてメッセージを表示するプログラム

 MIMEタイプに「text/plain」と設定することでプレーンテキスト(単純なテキスト)を表示するプログラムです。

実行結果

アプリケーション構成

① ソース・フォルダ :web_basic/WEB-INF/src
② パッケージ :ch05
③ 名前 :MimeTypeServlet1
④ スーパークラス :javax.servlet.http.HttpServlet
⑤ アクセスURL :http://localhost:8080/web_basic/MimeTypeServlet1

➢ MimeTypeServlet1.java
1package ch05;
2 
3import java.io.*;
4import javax.servlet.*;
5import javax.servlet.http.*;
6 
7public class MimeTypeServlet1 extends HttpServlet {
8 
9    public void doGet(HttpServletRequest request, HttpServletResponse response)
10    throws ServletException, IOException {
11  
12        //コンテンツタイプの指定
13        response.setContentType("text/plain; charset=UTF-8");
14  
15        //画面の出力
16        PrintWriter out = response.getWriter();
17        out.println("MIMEタイプによる");
18        out.println("出力の違いを");
19        out.println("確認しましょう");
20    }
21 }
➢ web.xml
1<servlet>
2    <servlet-name>MimeTypeServlet1Mapping</servlet-name>
3    <servlet-class>ch05.MimeTypeServlet1</servlet-class>
4</servlet>
5<servlet-mapping>
6    <servlet-name>MimeTypeServlet1Mapping</servlet-name>
7    <url-pattern>/MimeTypeServlet1</url-pattern>
8</servlet-mapping>

解説
 13行目ではMIMEタイプを「text/plain」と設定してコンテンツタイプを指定しています。
   13:response.setContentType("text/plain; charset=UTF-8");

 16行目から18行目で文字列を出力しています。
   16:out.println("MIMEタイプによる");
   17:out.println("出力の違いを");
   18:out.println("確認しましょう");

 このプログラムではコンテンツタイプのMIMEタイプを「text/plain」と設定しているため、1行1行が出力されたそのままの状態で表示されます。そのため、3つの文が改行され、分かれた状態となって表示されます。

MIMEタイプをtext/htmlとしてメッセージを表示するプログラム

 コンテンツタイプに「text/html」と設定しHTML形式でメッセージを表示するプログラムです。MIMEタイプの「text/plain」と「text/html」の出力の違いについて確認してみましょう。

実行結果

アプリケーション構成

① ソース・フォルダ :web_basic/WEB-INF/src
② パッケージ :ch05
③ 名前 :MimeTypeServlet2
④ スーパークラス :javax.servlet.http.HttpServlet
⑤ アクセスURL :http://localhost:8080/web_basic/MimeTypeServlet2

➢ MimeTypeServlet2.java
1package ch05;
2 
3import java.io.*;
4import javax.servlet.*;
5import javax.servlet.http.*;
6 
7public class MimeTypeServlet2 extends HttpServlet {
8 
9    public void doGet(HttpServletRequest request, HttpServletResponse response)
10    throws ServletException, IOException {
11  
12        //コンテンツタイプの指定
13        response.setContentType("text/html; charset=UTF-8");
14  
15        //画面の出力
16        PrintWriter out = response.getWriter();
17        out.println("MIMEタイプによる");
18        out.println("出力の違いを");
19        out.println("確認しましょう");
20    }
21 }
➢ web.xml
1<servlet>
2    <servlet-name>MimeTypeServlet2Mapping</servlet-name>
3    <servlet-class>ch05.MimeTypeServlet2</servlet-class>
4</servlet>
5<servlet-mapping>
6    <servlet-name>MimeTypeServlet2Mapping</servlet-name>
7    <url-pattern>/MimeTypeServlet2</url-pattern>
8</servlet-mapping>

解説
 MIMEタイプを「text/plain」と設定したプログラムと違い、3つの文字が1行で表示されています。
 これは、12行目でMIMEタイプを「text/html」と設定してコンテンツタイプを指定しているためです。
   12:response.setContentType("text/html; charset=UTF-8");

 MIMEタイプを「text/html」と設定した場合、ブラウザがHTML形式の文書であると認識します。HTMLでは<BR>タグが無いと改行されないため、このプログラムでは3つの文字が1行で表示されているのです。

 このように、同じ処理が書かれたプログラムでも、MIMEタイプの設定によって、ブラウザ側の動きが変わることに注意しましょう。


NEXT>> 5.3 HTMLを出力してみよう

f