LoginSignup
0
0

More than 3 years have passed since last update.

tomcatでjsp/servlet/struts2

Last updated at Posted at 2019-12-23

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の画面が表示されていたら起動成功
スクリーンショット 2019-12-22 16.54.58.png

終了するには以下

$ /usr/local/Cellar/tomcat/9.0.30/bin/catalina stop

HelloWorld.javaの作成

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の作成

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にアクセス
スクリーンショット 2019-12-22 17.17.17.png

できた

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/
にアクセス

スクリーンショット 2019-12-22 18.32.47.png
ホームページ表示
  ↓↓↓
HelloStrutsボタンをクリック
スクリーンショット 2019-12-22 18.32.57.png
HelloStrutsと表示できた!

ホームページに戻る
スクリーンショット 2019-12-22 18.32.47.png
Welcomeボタンをクリック
  ↓↓↓
スクリーンショット 2019-12-22 18.33.52.png
入力するページを表示できた!
  ↓↓↓
ユーザー名を入力して送信ボタンをクリック
スクリーンショット 2019-12-22 18.34.00.png
実行できた!

javaファイルやライブラリが大きくなるとコンパイルするコマンドがどんどん長くなってしまうし大変なので
今後はそこを改善してみたいと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0