tomcatでservlet HelloWorld
Javaとjsp/servletを学習して、Eclipseを使用して開発をしていたが、
Eclipseを使わず開発をするために以下やったことをまとめる
環境
・macOS Catalina 10.15.2
・Tomcat 9.0.30
・Java 13
参考にしたサイト
■さとうきびの初心者プログラミング日記>Tomcat -ServletでHelloWorldしてみる(Mac)
http://satoukibi.hatenablog.com/entry/2017/02/24/Tomcat_-Servlet%E3%81%A7HelloWorld%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%28Mac%29
■soracane>Struts2について>03.Struts2の設計と設定のルール
https://sites.google.com/site/soracane/home/struts2nitsuite/struts2no-she-jito-she-dingnoruru
brewにtomcatがあるか調べる
$ brew search tomcat
==> Formulae
tomcat tomcat-native tomcat@6 tomcat@7 tomcat@8
tomcatインストール
$ brew install tomcat
・・・
==> Downloading https://www.apache.org/dyn/closer.cgi?path=/tomcat/tomcat-9/v9.0
==> Downloading from https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.30/bin/
######################################################################## 100.0%
🍺 /usr/local/Cellar/tomcat/9.0.30: 641 files, 14.8MB, built in 27 seconds
/usr/local/Cellar/tomcat/9.0.30にインストールされた
tomcatの起動
$ /usr/local/Cellar/tomcat/9.0.30/bin/catalina start
Using CATALINA_BASE: /usr/local/Cellar/tomcat/9.0.30/libexec
Using CATALINA_HOME: /usr/local/Cellar/tomcat/9.0.30/libexec
Using CATALINA_TMPDIR: /usr/local/Cellar/tomcat/9.0.30/libexec/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
Using CLASSPATH: /usr/local/Cellar/tomcat/9.0.30/libexec/bin/bootstrap.jar:/usr/local/Cellar/tomcat/9.0.30/libexec/bin/tomcat-juli.jar
Tomcat started.
http//localhost:8080でtomcatの画面が表示されていたら起動成功
終了するには以下
$ /usr/local/Cellar/tomcat/9.0.30/bin/catalina stop
HelloWorld.javaの作成
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
web.xmlの作成
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>HelloWorldName</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldName</servlet-name>
<url-pattern>/HelloWorldPage</url-pattern>
</servlet-mapping>
</web-app>
コンパイル
$ javac -classpath "/usr/local/Cellar/tomcat/9.0.30/libexec/lib/servlet-api.jar" HelloWorld.java
tomcatのディレクトリ構成
/usr/local/Cellar/tomcat/バージョン/libexec/webapps/
webapps配下にwebアプリケーションを配置する
webアプリのディレクトリ構成
webapps/
└--webアプリのルートディレクトリ/
└--WEB-INF/
|--web.xml
└--classes/
└HelloWorld.class
http://localhost:8080/test/HelloWorldPageにアクセス
できた
tomcatでstruts2を利用したwebアプリを動かす
・ホームページ表示(index.jsp)
・ボタンクリックでHelloStrutsと表示するページ表示(hello.jsp)
・ボタンクリックで名前を入力するページ表示(welcome.jsp)
→名前入力後、送信ボタンクリックでPOST通信で送られた名前を表示するページ表示(login.jsp)
struts2のディレクトリ構成
webapps/
└--HelloStruts/
|--index.jsp
|--hello.jsp
|--welcome.jsp
|--login.jsp
|--src/
| └--action/
| └--com/
| └--action/
| |--HelloStrutsAction.java
| |--WelcomeAction.java
| └--Login.Action.java
└--WEB-INF/
|--web.xml
|--lib/ ※ライブラリ
| |--commons-fileupload-1.4.jar
| |--commons-io-2.2.jar
| |--commons-lang3-3.2.jar
| |--commons-logging-1.1.3.jar
| |--freemarker-2.3.28.jar
| |--javassist-3.11.0.GA.jar
| |--ogni-3.0.21.jar
| |--struts2-core-2.3.37.jar
| └--xwork-core-2.3.37.jar
└--classes/
|--struts.xml
└--com/
└--action/
|--HelloStrutsAction.class
|--WelcomeAction.class
└--Login.Action.class
javaファイルがあるディレクトリに移動
cd /usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/src/com/action
コンパイル&ライブラリのパスを通す
※ライブラリの間は「:」でつないでいる
$ javac -classpath "/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/commons-fileupload-1.4.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/commons-io-2.2.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/commons-lang3-3.2.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/commons-logging-1.1.3.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/freemarker-2.3.28.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/javassist-3.11.0.GA.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/ognl-3.0.21.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/struts2-core-2.3.37.jar:
/usr/local/Cellar/tomcat/9.0.30/libexec/webapps/HelloStruts/WEB-INF/lib/xwork-core-2.3.37.jar"
HelloStrutsAction.java LoginAction.java WelcomeAction.java
javaファイルの下にそれぞれの.classファイルができているので、
それを/HelloStruts/WEB-INF/classes/classes/配下に移動して
http://localhost:8080/HelloStruts/
にアクセス


ホームページに戻る
Welcomeボタンをクリック
↓↓↓
入力するページを表示できた!
↓↓↓
ユーザー名を入力して送信ボタンをクリック
実行できた!
javaファイルやライブラリが大きくなるとコンパイルするコマンドがどんどん長くなってしまうし大変なので
今後はそこを改善してみたいと思う。