さとうきびの初心者プログラミング日記

Unity,Java,Pythonとかで調べたことをまとめていきます。間違っていることがあったら、コメント等で教えてくれるとありがたいです..!

Tomcat -ServletでHelloWorldしてみる(Mac)


インストールされてない方は前回記事からお願いします。

今回は以下のサイトの流れで進めているので、
こちらのサイトの方も参考にしてください!


管理用のユーザの追加
$ vim /usr/local/Cellar/tomcat/8.5.11/libexec/conf/tomcat-users.xml

/usr/local/Cellar/tomcat/8.5.11/libexec/conf/にある
tomcat-users.xmlというファイルを開きましょう。

自分はvimで開いたため上のコマンドを使用しましたが
テキストエディタで開いて構いません。

  <role rolename="manager-gui"/>
  <user username="tomcat" password="tomcat" roles="manager-gui"/>

tomcat-usersというタグ内に追記してください!
追記できたら保存してサーバの起動を行いましょう。

起動
$ /usr/local/Cellar/tomcat/8.5.11/bin/catalina start

http://localhost:8080/

起動できたらTomcatの画面で画面右のManager Appというボタンを押します。
先ほど追記したusernameとpasswordを入力し、管理画面が表示できれば設定完了です。


アプリケーションの構成

Webアプリのルートとなるディレクトリを作ります。
/usr/local/Cellar/tomcat/8.5.11/libexec/webapps/の中にtestというディレクトリを作りましょう。

webapps/
├ test/


さらにtestの中に以下のようにディレクトリを作成しましょう。

webapps/
├ test/
   ┗ WEB-INF/
      ┗ classes/

test/の中にWEB-INF/
そのWEB-INF/の中にclasses/という感じです。
これがアプリケーションの構成になります。

サーブレットの作成

サーブレットってなんだろう?と自分も思いました。
以下のサイトがすごくわかりやすかったので紹介しておきます。

簡単に言うとサーブレットとは

「WEBアプリを開発するために作られたJavaプログラムの部品」

とありますね!

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>");
  }
}


ファイルが完成したら適当な場所に保存しコンパイルします。

$ javac -classpath "/usr/local/Cellar/tomcat/8.5.11/libexec/lib/servlet-api.jar" HelloWorld.java

-classpath " "の部分はインストールした環境によって異なるので
自分がインストールした場所を指定しましょう。

出来上がった HelloWorld.classファイルを
先ほどのclasses/ディレクトリに置きましょう。

webapps/
├ test/
   ┗ WEB-INF/
      ┗ classes/
         ┗ HelloWorld.class

classファイルはclassesディレクトリに保存します!


次に,WEB-INF/ディレクトリ内に,下記のような 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>


記述の仕方に関しては、以下の記事がすごくわかりやすいです!

現在のフォルダ構成は、以下のようになります。

webapps/
├ test/
   ┗ WEB-INF/
      ├ web.xml
      ┗ classes/
         ┗ HelloWorld.class


ここまできたら、あとは実行できるか確認してみます!
以下のURLにアクセスしてみましょう。
http://localhost:8080/test/HelloWorldPage



f:id:yuhgt:20170224005040p:plain

HelloWorldできたら、完成です。
お疲れ様でした。
すごく長かったですね;;

参考にしたサイト様