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

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

Tomcat -JSPでカウンターを作ってみる(Mac)


とりあえずHelloWorldしてみる

前回作ったtest/ディレクトリの中に jspSample/というディレクトリを作りましょう

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


jspSample/の中に.jspファイルを作成していきます。
まずはHelloWorldですね。

jspSample/ディレクトリの中にhello.jspを作成し、
以下の内容を追記します。

hello.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    <%
      out.print("Hello World!");
    %>
  </body>
</html>

htmlの中にJavaのコードを埋め込み、
実行できるようになったものがjspみたいですね。

webapps/
├ test/
   ├ jspSample/
   │  ┗ hello.jsp
   ┗ WEB-INF/
      ┗ classes/

.jspファイルは、コンパイルしなくていいので
上記のような構成になっているのを確認したら、URLを開いて確認しましょう。

http://localhost:8080/test/jspSample/hello.jsp

無事HelloWorldが確認できたでしょうか?
サーブレットに比べて、かなり簡単にできたかと思いますが、
jspサーブレット、どちらが優れているということはないので、
状況によって使い分けていけると良いですね!
今回はとりあえずjspのみで作っていこうと思います。


jspサーブレットの違いについて、
すごくわかりやすく解説してくださっているサイト様です。



アクセスカウンター

次はアクセスカウンターを作ってみましょう。

その前にdata/ディレクトリをtest/ディレクトリに作ります。

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

ここはカウントの値を保存するファイルを格納する場所として使います。


次にjspSample/ディレクトリの中にcounter.jspを作成し、
以下の内容を追記しましょう。

counter.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.*" %>
<html>
  <head><title>counter</title></head>
  <body>
    <%! int count; %>
    <%
      request.setCharacterEncoding("UTF-8");
      synchronized(this) {
        try {
          String fname ="/usr/local/Cellar/tomcat/8.5.11/libexec/webapps/test/data/counter.txt";
          File file = new File(fname);
          if( file.exists() ) { 
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line = br.readLine();
            count = Integer.parseInt(line);
            count++;
            br.close();
          } else 
            count = 1;
          PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
          pw.println(count);
          pw.close();
        } catch( Exception e ) { }
      }
    %>
    count :<%= count %><br>
  </body>
</html>

ファイルの内容としては、
ファイルがあればその値を読み取り ++1して上書き、
なければ新しくファイルを作り “1” を書き込むという シンプルなものだと思います。

保存出来たら確認してみましょう!

http://localhost:8080/test/jspSample/counter.jsp



更新をするたびに値が増えていけば、きちんと動作しています。
ここまで読んでくださってありがとうございます!
お疲れ様でした。


参考にしたサイト様

KAZU JAVA/JSP/アクセスカウンター