日本語を表示するサーブレット


コンテンツタイプを指定してHTMLを出力するサーブレット

日本語を出力するサーブレット HelloHtmlServlet.java を考えてみます。

HelloHtmlServlet.javaは

という点で、前回に学んだHelloServlet.javaとは異なっています。

コンテンツタイプは「MIMEタイプ;文字エンコーディング」の形式で指定します。 HelloHtmlServlet.javaでは

を指定したことになります。 文字エンコーディングは以前は"Windows-31J"がよく使われていました。 今後は "utf-8"が主流になると思われるので、この講義ではできるだけ "utf-8" で統一する予定です。

プログラムの中でdoGet()メソッドの第2引数(HttpServletResponseクラス)から PrintWriterオブジェクトを得ていますが、 これよりも前に setContentType()メソッドを呼び出して文字エンコーディングを設定する 必要がある ことに注意して下さい。

[ファイル配置]
  ${CATALINA_HOME}/webapps/entry/WEB-INF/src/HelloHtmlServlet.java
${CATALINA_HOME}/webapps/entry/WEB-INF/src/HelloHtmlServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloHtmlServlet extends HttpServlet {
    public void doGet(HttpServletRequest req,HttpServletResponse res)
    throws IOException, ServletException {
	res.setContentType("text/html; charset=utf-8");
	PrintWriter out = res.getWriter();
	out.println("<html><head><title>");
	out.println("HTMLサーブレット");
	out.println("</title></head><body>");
	out.println("こんにちは");
	out.println("</body></html>");
    }
}
${CATALINA_HOME}/webapps/entry/WEB-INF/web.xmlへの記述の追加
*** entry/WEB-INF/web.xml.03	Fri Nov 18 19:13:08 2016
--- entry/WEB-INF/web.xml.04	Fri Nov 18 19:13:21 2016
***************
*** 17,22 ****
--- 17,26 ----
      <servlet-name>OracleServlet</servlet-name>
      <servlet-class>OracleServlet</servlet-class>
    </servlet>
+   <servlet>
+     <servlet-name>HelloHtmlServlet</servlet-name>
+     <servlet-class>HelloHtmlServlet</servlet-class>
+   </servlet>
    <servlet-mapping>
      <servlet-name>HelloServlet</servlet-name>
      <url-pattern>/HelloServlet</url-pattern>
***************
*** 29,32 ****
--- 33,40 ----
      <servlet-name>OracleServlet</servlet-name>
      <url-pattern>/OracleServlet</url-pattern>
    </servlet-mapping>
+   <servlet-mapping>
+     <servlet-name>HelloHtmlServlet</servlet-name>
+     <url-pattern>/HelloHtmlServlet</url-pattern>
+   </servlet-mapping>
  </web-app>
HelloHtmlServlet.javaのコンパイル
$ cd C:\Users\nitta\tomcat8\webapps\entry\WEB-INF 
$ javac src/HelloHtmlServlet.java -d classes -sourcepath src 
[ブラウザでアクセスするURL]
  http://localhost:8080/entry/HelloHtmlServlet

このHtmlドキュメントのソース