HttpServlet

いよいよ、Java Servletに入っていく。

HttpServlet (Jakarta EE 8 仕様 API) - Javadoc
CentOS7 java tomcat サーブレット JSP インストール | itcore 2019年
【Java & Tomcat】アプリケーションのフォルダ構成と出力確認

Java Servletのエントリポイントというか、GETされた時の処理などは、HttpServletクラスを継承したクラスで行う模様。

$ pwd
/home/bg1/project/cloud/github.com/Sample/servlet/HttpServlet/HttpServlet/src/HttpServlet
$ mkdir main
$ cd main/
$ pwd
/home/bg1/project/cloud/github.com/Sample/servlet/HttpServlet/HttpServlet/src/HttpServlet/main
$ mkdir WEB-INF
$ cd WEB-INF/
$ mkdir classes
$ mkdir lib
$ ls
classes  lib
$

プロジェクトのディレクトリをmainとすると、その下にWEB-INFディレクトリを作り、さらにその下にclassesとlibディレクトリを作る。
(今回というかしばらくlibは使わないけど。)

$ ls
classes  lib
$ cd classes/
$ ls
$ vi ServletMain.java

で、classesの下で、ServletMain.javaを開いて、

HttpServletを継承したServletMainを定義し、doGetで"ABCDE"を含むHTMLを返す。

$ sudo cp -r /home/bg1/project/cloud/github.com/Sample/servlet/HttpServlet/HttpServlet/src/HttpServlet/main /var/lib/tomcat/webapps/

main一式を/var/lib/tomcat/webapps/の下に持ってくる。

$ ls -al
合計 32
drwxrwxr-x. 8 root   tomcat 4096  x月 xx xx:xx .
drwxr-xr-x. 3 root   tomcat 4096  x月 xx xx:xx ..
drwxr-xr-x. 3 tomcat tomcat 4096  x月 xx xx:xx ROOT
drwxr-xr-x. 7 tomcat tomcat 4096  x月 xx xx:xx examples
drwxr-xr-x. 5 root   tomcat 4096  x月 xx xx:xx host-manager
drwxr-xr-x. 3 root   root   4096  x月 xx xx:xx main
drwxr-xr-x. 6 root   tomcat 4096  x月 xx xx:xx manager
drwxr-xr-x. 5 tomcat tomcat 4096  x月 xx xx:xx sample
$

mainがrootになってるので、

$ sudo chown tomcat main
$ sudo chgrp tomcat main

オーナーとグループをtomcatに。

$ ls
ROOT  examples  host-manager  main  manager  sample
$ cd main/
$ cd WEB-INF/
$ cd classes/
$ ls
ServletMain.java
$ sudo vi ServletMain.java
$ sudo javac ServletMain.java -classpath /usr/share/tomcat/lib/tomcat-servlet-4.0-api.jar
$ ls
ServletMain.class  ServletMain.java
$

ServletMain.javaをjavacでコンパイル
(CATALINA_HOMEとかパスが全然通ってないので仕方なくclasspathを直接指定・・・。後で直すつもり・・・。)

$ cd ..
$ ls
classes  lib
$ sudo vi web.xml

上がって、WEB-INFの下で、web.xmlを開いて、

こう書く。
servlet-nameとしてはmainだが、実際にはServletMain.classが実行される。
URLのパターンとしては"/main"、ただし、webappsの下のmainの下に置いてるので、"http://ホスト名:8080/main/main"でアクセスする。

$ sudo systemctl restart tomcat

tomcatを再起動して、

こうなる
こうなる

こうなる。

Sample/servlet/HttpServlet/HttpServlet/src/HttpServlet at master · bg1bgst333/Sample · GitHub