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

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

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

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

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

① ソース・フォルダ: web_basic/src/main/java
② パッケージ: ch02
③ 名前: MimeTypeServlet1
④ スーパークラス: jakarta.servlet.http.HttpServlet
⑤ アクセスURL: http://localhost:8080/web_basic/MimeTypeServlet1

MimeTypeServlet1.java

package ch02;

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/MimeTypeServlet1")
public class MimeTypeServlet1 extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //画面の出力
        response.setContentType("text/plain; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("MIMEタイプによる");
        out.println("出力の違いを");
        out.println("確認しましょう");
    }
}

解説

18行目ではMIMEタイプを「text/plain」と設定してコンテンツタイプを指定しています。

18: response.setContentType("text/plain; charset=UTF-8");

20行目から22行目で文字列を出力しています。

20: out.println("MIMEタイプによる");
21: out.println("出力の違いを");
22: out.println("確認しましょう");

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

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

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

① ソース・フォルダ: web_basic/src/main/java
② パッケージ: ch02
③ 名前: MimeTypeServlet2
④ スーパークラス: jakarta.servlet.http.HttpServlet
⑤ アクセスURL: http://localhost:8080/web_basic/MimeTypeServlet2

MimeTypeServlet2.java

package ch02;

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/MimeTypeServlet2")
public class MimeTypeServlet2 extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //画面の出力
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("MIMEタイプによる");
        out.println("出力の違いを");
        out.println("確認しましょう");
    }
}

解説

MIMEタイプを「text/plain」と設定したプログラムと違い、3つの文字が1行で表示されています。
これは、18行目でMIMEタイプを「text/html」と設定してコンテンツタイプを指定しているためです。

18: response.setContentType("text/html; charset=UTF-8");

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

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


NEXT>> 2.6 本章のまとめ