ServletResponse.setContentType

ServletResponse.setContentTypeで、Contenty-Typeをセットする。

ServletResponse (Java(TM) EE 7 Specification APIs)

今回は、Fedora41のVSCodeでやる。
まず、Mavenのインストール。

bg1@vbox:~$ sudo dnf install maven
リポジトリの更新を読み込み中:
リポジトリを読み込みました。
Package                                              Arch         Version                                              Repository                        Size
Installing:
 maven                                               noarch       1:3.9.6-7.fc41                                       fedora                        21.8 KiB
Installing dependencies:
 aopalliance                                         noarch       1.0-40.fc41                                          fedora                        11.4 KiB
 apache-commons-cli                                  noarch       1.8.0-2.fc41                                         fedora                       126.1 KiB
 apache-commons-codec                                noarch       1.17.1-2.fc41                                        fedora                       404.2 KiB
 apache-commons-io                                   noarch       1:2.16.1-2.fc41                                      fedora                       639.0 KiB
 apache-commons-lang3                                noarch       3.14.0-6.fc41                                        fedora                       785.1 KiB
 atinject                                            noarch       1.0.5-13.fc41                                        fedora                        26.9 KiB
 cdi-api                                             noarch       2.0.2-15.fc41                                        fedora                        67.6 KiB
 google-guice                                        noarch       5.1.0-13.fc41                                        fedora                       676.0 KiB
 guava                                               noarch       33.2.1-2.fc41                                        fedora                         2.9 MiB
 httpcomponents-client                               noarch       4.5.14-9.fc41                                        fedora                       848.1 KiB
 httpcomponents-core                                 noarch       4.4.16-9.fc41                                        fedora                         1.1 MiB
 jakarta-annotations                                 noarch       1.3.5-23.fc41                                        fedora                        74.6 KiB
 jansi                                               x86_64       2.4.1-4.fc41                                         fedora                       180.3 KiB
 jcl-over-slf4j                                      noarch       1.7.36-2.fc41                                        fedora                        19.6 KiB
 jsr-305                                             noarch       3.0.2-17.fc41                                        fedora                        44.7 KiB
 maven-lib                                           noarch       1:3.9.6-7.fc41                                       fedora                         1.9 MiB
 maven-openjdk21                                     noarch       1:3.9.6-7.fc41                                       fedora                        38.0   B
 maven-resolver                                      noarch       1:1.9.18-5.fc41                                      fedora                       985.0 KiB
 maven-shared-utils                                  noarch       3.4.2-8.fc41                                         fedora                       166.6 KiB
 maven-wagon                                         noarch       3.5.3-8.fc41                                         fedora                       166.7 KiB
 plexus-cipher                                       noarch       2.0-12.fc41                                          fedora                        30.3 KiB
 plexus-classworlds                                  noarch       2.8.0-4.fc41                                         fedora                        71.3 KiB
 plexus-containers-component-annotations             noarch       2.2.0-4.fc41                                         fedora                        18.2 KiB
 plexus-interpolation                                noarch       1.27-4.fc41                                          fedora                        85.6 KiB
 plexus-sec-dispatcher                               noarch       2.0-14.fc41                                          fedora                        40.1 KiB
 plexus-utils                                        noarch       3.5.1-8.fc41                                         fedora                       287.0 KiB
 publicsuffix-list                                   noarch       20250616-1.fc41                                      updates                      332.8 KiB
 sisu                                                noarch       1:0.3.5-15.fc41                                      fedora                       589.9 KiB
 slf4j                                               noarch       1.7.36-2.fc41                                        fedora                        80.5 KiB

Transaction Summary:
 Installing:        30 packages

パッケージサイズ 10 MiB 、ダウンロードサイズ 10 MiB 。
完了後、12 MiB のサイズが利用されます(インストール 12 MiB、削除 0 B)。
Is this ok [y/N]: y
[ 1/30] maven-1:3.9.6-7.fc41.noarch                                                                                  100% |  44.3 KiB/s |  18.0 KiB |  00m00s
[ 2/30] apache-commons-lang3-0:3.14.0-6.fc41.noarch                                                                  100% | 387.7 KiB/s | 616.8 KiB |  00m02s
[ 3/30] apache-commons-cli-0:1.8.0-2.fc41.noarch                                                                     100% |  29.5 KiB/s |  89.7 KiB |  00m03s
[ 4/30] maven-lib-1:3.9.6-7.fc41.noarch                                                                              100% | 479.0 KiB/s |   1.6 MiB |  00m03s
[ 5/30] atinject-0:1.0.5-13.fc41.noarch                                                                              100% |  12.9 KiB/s |  22.9 KiB |  00m02s
[ 6/30] google-guice-0:5.1.0-13.fc41.noarch                                                                          100% | 330.8 KiB/s | 606.3 KiB |  00m02s
[ 7/30] jakarta-annotations-0:1.3.5-23.fc41.noarch                                                                   100% |  28.9 KiB/s |  44.9 KiB |  00m02s
[ 8/30] guava-0:33.2.1-2.fc41.noarch                                                                                 100% |   1.1 MiB/s |   2.5 MiB |  00m02s
[ 9/30] maven-shared-utils-0:3.4.2-8.fc41.noarch                                                                     100% | 117.8 KiB/s | 148.6 KiB |  00m01s
[10/30] maven-resolver-1:1.9.18-5.fc41.noarch                                                                        100% | 475.7 KiB/s | 753.0 KiB |  00m02s
[11/30] jansi-0:2.4.1-4.fc41.x86_64                                                                                  100% |  39.3 KiB/s | 116.8 KiB |  00m03s
[12/30] plexus-cipher-0:2.0-12.fc41.noarch                                                                           100% |  16.3 KiB/s |  25.4 KiB |  00m02s
[13/30] maven-wagon-0:3.5.3-8.fc41.noarch                                                                            100% |  50.7 KiB/s | 107.6 KiB |  00m02s
[14/30] plexus-classworlds-0:2.8.0-4.fc41.noarch                                                                     100% |  38.7 KiB/s |  60.8 KiB |  00m02s
[15/30] plexus-containers-component-annotations-0:2.2.0-4.fc41.noarch                                                100% |  11.5 KiB/s |  17.1 KiB |  00m01s
[16/30] plexus-interpolation-0:1.27-4.fc41.noarch                                                                    100% |  52.0 KiB/s |  80.0 KiB |  00m02s
[17/30] plexus-utils-0:3.5.1-8.fc41.noarch                                                                           100% | 161.5 KiB/s | 262.0 KiB |  00m02s
[18/30] sisu-1:0.3.5-15.fc41.noarch                                                                                  100% | 335.3 KiB/s | 516.0 KiB |  00m02s
[19/30] plexus-sec-dispatcher-0:2.0-14.fc41.noarch                                                                   100% |  11.6 KiB/s |  33.4 KiB |  00m03s
[20/30] slf4j-0:1.7.36-2.fc41.noarch                                                                                 100% |  43.3 KiB/s |  67.9 KiB |  00m02s
[21/30] aopalliance-0:1.0-40.fc41.noarch                                                                             100% |   9.5 KiB/s |  15.2 KiB |  00m02s
[22/30] jsr-305-0:3.0.2-17.fc41.noarch                                                                               100% |  23.2 KiB/s |  35.3 KiB |  00m02s
[23/30] apache-commons-codec-0:1.17.1-2.fc41.noarch                                                                  100% | 203.5 KiB/s | 313.4 KiB |  00m02s
[24/30] httpcomponents-client-0:4.5.14-9.fc41.noarch                                                                 100% | 429.2 KiB/s | 663.2 KiB |  00m02s
[25/30] httpcomponents-core-0:4.4.16-9.fc41.noarch                                                                   100% | 397.1 KiB/s | 639.4 KiB |  00m02s
[26/30] jcl-over-slf4j-0:1.7.36-2.fc41.noarch                                                                        100% |  16.5 KiB/s |  23.8 KiB |  00m01s
[27/30] publicsuffix-list-0:20250616-1.fc41.noarch                                                                   100% | 270.9 KiB/s |  89.9 KiB |  00m00s
[28/30] apache-commons-io-1:2.16.1-2.fc41.noarch                                                                     100% | 325.0 KiB/s | 478.1 KiB |  00m01s
[29/30] maven-openjdk21-1:3.9.6-7.fc41.noarch                                                                        100% |  38.3 KiB/s |   9.1 KiB |  00m00s
[30/30] cdi-api-0:2.0.2-15.fc41.noarch                                                                               100% |  33.8 KiB/s |  53.5 KiB |  00m02s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
[30/30] Total                                                                                                        100% | 562.6 KiB/s |   9.9 MiB |  00m18s
トランザクションを実行中
[ 1/32] パッケージ ファイルを検証                                                                        100% | 300.0   B/s |  30.0   B |  00m00s
[ 2/32] トランザクションの準備                                                                            100% |  39.0   B/s |  30.0   B |  00m01s
[ 3/32] インストール中 slf4j-0:1.7.36-2.fc41.noarch                                                           100% | 452.7 KiB/s |  83.3 KiB |  00m00s
[ 4/32] インストール中 atinject-0:1.0.5-13.fc41.noarch                                                        100% | 696.3 KiB/s |  27.9 KiB |  00m00s
[ 5/32] インストール中 plexus-utils-0:3.5.1-8.fc41.noarch                                                     100% |   6.7 MiB/s | 288.2 KiB |  00m00s
[ 6/32] インストール中 httpcomponents-core-0:4.4.16-9.fc41.noarch                                             100% |  18.3 MiB/s |   1.1 MiB |  00m00s
[ 7/32] インストール中 plexus-cipher-0:2.0-12.fc41.noarch                                                     100% | 735.3 KiB/s |  31.6 KiB |  00m00s
[ 8/32] インストール中 jcl-over-slf4j-0:1.7.36-2.fc41.noarch                                                  100% | 819.2 KiB/s |  20.5 KiB |  00m00s
[ 9/32] インストール中 apache-commons-codec-0:1.17.1-2.fc41.noarch                                            100% |   8.4 MiB/s | 406.0 KiB |  00m00s
[10/32] インストール中 plexus-containers-component-annotations-0:2.2.0-4.fc41.noarch                          100% | 857.3 KiB/s |  19.7 KiB |  00m00s
[11/32] インストール中 plexus-classworlds-0:2.8.0-4.fc41.noarch                                               100% |   1.9 MiB/s |  73.0 KiB |  00m00s
[12/32] インストール中 plexus-sec-dispatcher-0:2.0-14.fc41.noarch                                             100% |   2.5 MiB/s |  41.3 KiB |  00m00s
[13/32] インストール中 cdi-api-0:2.0.2-15.fc41.noarch                                                         100% |   2.0 MiB/s |  69.2 KiB |  00m00s
[14/32] インストール中 sisu-1:0.3.5-15.fc41.noarch                                                            100% |  13.7 MiB/s | 591.1 KiB |  00m00s
[15/32] インストール中 publicsuffix-list-0:20250616-1.fc41.noarch                                             100% |   3.7 MiB/s | 333.8 KiB |  00m00s
[16/32] インストール中 httpcomponents-client-0:4.5.14-9.fc41.noarch                                           100% |  16.3 MiB/s | 850.1 KiB |  00m00s
[17/32] インストール中 maven-wagon-0:3.5.3-8.fc41.noarch                                                      100% |   3.9 MiB/s | 169.5 KiB |  00m00s
[18/32] インストール中 apache-commons-io-1:2.16.1-2.fc41.noarch                                               100% |  18.4 MiB/s | 640.6 KiB |  00m00s
[19/32] インストール中 maven-shared-utils-0:3.4.2-8.fc41.noarch                                               100% |   6.6 MiB/s | 168.0 KiB |  00m00s
[20/32] インストール中 jsr-305-0:3.0.2-17.fc41.noarch                                                         100% | 522.2 KiB/s |  50.7 KiB |  00m00s
[21/32] インストール中 guava-0:33.2.1-2.fc41.noarch                                                           100% |  30.5 MiB/s |   2.9 MiB |  00m00s
[22/32] インストール中 aopalliance-0:1.0-40.fc41.noarch                                                       100% | 794.5 KiB/s |  11.9 KiB |  00m00s
[23/32] インストール中 google-guice-0:5.1.0-13.fc41.noarch                                                    100% |  15.7 MiB/s | 677.1 KiB |  00m00s
[24/32] インストール中 plexus-interpolation-0:1.27-4.fc41.noarch                                              100% |   3.2 MiB/s |  86.4 KiB |  00m00s
[25/32] インストール中 jansi-0:2.4.1-4.fc41.x86_64                                                            100% |   3.5 MiB/s | 182.5 KiB |  00m00s
[26/32] インストール中 jakarta-annotations-0:1.3.5-23.fc41.noarch                                             100% |   1.3 MiB/s |  76.5 KiB |  00m00s
[27/32] インストール中 apache-commons-lang3-0:3.14.0-6.fc41.noarch                                            100% |  10.8 MiB/s | 786.7 KiB |  00m00s
[28/32] インストール中 apache-commons-cli-0:1.8.0-2.fc41.noarch                                               100% |   3.8 MiB/s | 127.9 KiB |  00m00s
[29/32] インストール中 maven-resolver-1:1.9.18-5.fc41.noarch                                                  100% |   8.4 MiB/s | 993.2 KiB |  00m00s
[30/32] インストール中 maven-lib-1:3.9.6-7.fc41.noarch                                                        100% |   9.9 MiB/s |   1.9 MiB |  00m00s
[31/32] インストール中 maven-openjdk21-1:3.9.6-7.fc41.noarch                                                  100% |  26.3 KiB/s | 296.0   B |  00m00s
[32/32] インストール中 maven-1:3.9.6-7.fc41.noarch                                                            100% |  13.1 KiB/s |  23.2 KiB |  00m02s
完了しました!
bg1@vbox:~$

続いて、tomcat-webapps

bg1@vbox:~$ sudo dnf install tomcat-webapps
リポジトリの更新を読み込み中:
リポジトリを読み込みました。
Package                                              Arch         Version                                              Repository                        Size
Installing:
 tomcat-webapps                                      noarch       1:9.0.107-1.fc41                                     updates                      146.2 KiB

Transaction Summary:
 Installing:         1 package

パッケージサイズ 80 KiB 、ダウンロードサイズ 80 KiB 。
完了後、146 KiB のサイズが利用されます(インストール 146 KiB、削除 0 B)。
Is this ok [y/N]: y
[1/1] tomcat-webapps-1:9.0.107-1.fc41.noarch                                                                         100% | 200.0 KiB/s |  80.0 KiB |  00m00s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
[1/1] Total                                                                                                          100% |  51.0 KiB/s |  80.0 KiB |  00m02s
トランザクションを実行中
[1/3] パッケージ ファイルを検証                                                                          100% |  35.0   B/s |   1.0   B |  00m00s
[2/3] トランザクションの準備                                                                              100% |   4.0   B/s |   1.0   B |  00m00s
[3/3] インストール中 tomcat-webapps-1:9.0.107-1.fc41.noarch                                                   100% | 293.1 KiB/s | 148.3 KiB |  00m01s
完了しました!
bg1@vbox:~$

続いて、tomcat-admin-webapps

bg1@vbox:~$ sudo dnf install tomcat-admin-webapps
リポジトリの更新を読み込み中:
リポジトリを読み込みました。
Package                                              Arch         Version                                              Repository                        Size
Installing:
 tomcat-admin-webapps                                noarch       1:9.0.107-1.fc41                                     updates                      252.6 KiB

Transaction Summary:
 Installing:         1 package

パッケージサイズ 77 KiB 、ダウンロードサイズ 77 KiB 。
完了後、253 KiB のサイズが利用されます(インストール 253 KiB、削除 0 B)。
Is this ok [y/N]: y
[1/1] tomcat-admin-webapps-1:9.0.107-1.fc41.noarch                                                                   100% | 228.1 KiB/s |  77.1 KiB |  00m00s
-------------------------------------------------------------------------------------------------------------------------------------------------------------
[1/1] Total                                                                                                          100% |  79.5 KiB/s |  77.1 KiB |  00m01s
トランザクションを実行中
[1/3] パッケージ ファイルを検証                                                                          100% |  71.0   B/s |   1.0   B |  00m00s
[2/3] トランザクションの準備                                                                              100% |   2.0   B/s |   1.0   B |  00m00s
[3/3] インストール中 tomcat-admin-webapps-1:9.0.107-1.fc41.noarch                                             100% | 326.3 KiB/s | 258.7 KiB |  00m01s
完了しました!
bg1@vbox:~$

で、CATALINA_HOMEを設定してなかったので、

bg1@vbox:~$ echo 'export CATALINA_HOME=$HOME/tomcat/apache-tomcat-9.0.100' >> ~/.bashrc
bg1@vbox:~$ source ~/.bashrc

設定する。

bg1@vbox:~/project/cloud/github.com/Sample/servlet/ServletResponse/setContentType/src$ mkdir ServletResponse
bg1@vbox:~/project/cloud/github.com/Sample/servlet/ServletResponse/setContentType/src$ code ServletResponse

ServletResponseディレクトリを指定してVSCodeを起動。

Tomcat for Javaは非推奨なので、Community Server Connectorsを入れる。
Tomcat for Javaは非推奨なので、Community Server Connectorsを入れる。

Tomcat for Javaは非推奨なので、Community Server Connectorsを入れる。

bg1@vbox:~/project/cloud/github.com/Sample/servlet/ServletResponse/setContentType/src/ServletResponse$ mvn archetype:generate \
> -DgroupId=com.bgstation0.servlet.sample.servletresponse \
> -DartifactId=ServletResponse \
> -DarchetypeArtifactId=maven-archetype-webapp \
> -DinteractiveMode=false

(中略)

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

(中略)

bg1@vbox:~/project/cloud/github.com/Sample/servlet/ServletResponse/setContentType/src/ServletResponse$

Maven Webアプリ雛形作成。
こうなればいい。

src/mainの下のjavaディレクトリ以下が掘られてないので、
src/mainの下のjavaディレクトリ以下が掘られてないので、

src/mainの下のjavaディレクトリ以下が掘られてないので、

bg1@vbox:~/project/cloud/github.com/Sample/servlet/ServletResponse/setContentType/src/ServletResponse/ServletResponse/src/main$ mkdir -p java/com/bgstation0/servlet/sample/servletresponse
bg1@vbox:~/project/cloud/github.com/Sample/servlet/ServletResponse/setContentType/src/ServletResponse/ServletResponse/src/main$

こんな感じでディレクトリを掘る。

ServletMain.java
ServletMain.java

そして、その下にServletMain.javaを作る。

package com.bgstation0.servlet.sample.servletresponse;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ServletMain")
public class ServletMain extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
		response.getWriter().append("<html><head><title>main</title></head><body>VSCode-ABCDE</body></html>");
    }
}

最初は、text/htmlで。

赤線はdependencyにjavax.servletを追加することで解消。
赤線はdependencyにjavax.servletを追加することで解消。

赤線はpom.xmldependencyにjavax.servletを追加することで解消。

コマンドパレットでAdd Local Server
コマンドパレットでAdd Local Server

コマンドパレットでAdd Local Server

tomcatのディレクトリを指定
tomcatディレクトリを指定

tomcatディレクトリを指定

この辺はそのままで
この辺はそのままで

この辺はそのままで

そのままFinish
そのままFinish

そのままFinish

今、TomcatはStopped
今、TomcatはStopped

今、TomcatはStopped

Start Server
Start Server

Start Server

StartedだけどUnknown
StartedだけどUnknown

StartedだけどUnknown

warファイル右クリックでRun on Server
warファイル右クリックでRun on Server

warファイル右クリックでRun on Server

Tomcat 9.x
Tomcat 9.x

Tomcat 9.x

No
No

No

こうなる。
こうなる。

こうなる。

setContentTypeでtext/plainに。

こうなる。
こうなる。

こうなる。

Sample/servlet/ServletResponse/setContentType/src/ServletResponse at master · bg1bgst333/Sample · GitHub