みかづきメモ

学習したことのメモとか、日記とか、備忘録。

IntelliJ IDEA で Tomcat 開発

今後、私がサーバーサイド Java を触ることはないだろうけども、
万が一あった際のためにメモ。


IntelliJ IDEA で Tomcat を使って、 JSP の開発したい時、行っておく設定のメモ。
前提条件は、

  • IntelliJ IDEA 2016.1.3
  • Java 8
  • Tomcat 8.x
  • プロジェクトは既存のものをインポート

ディレクトリ構成は、 IDEA デフォルトのものとは違うと思うけど、こんな感じ。

ROOT
|-users
| |- *.jsp
|
|-META-INF
|
|-WEB-INF
| |-classes
| | |-com.kokoiroworks
| | | |- *.java
|
|- *.jsp

で、これをそのまま使おうとすると、補完機能が HTML 以外では動作しません。困った。
ということで、設定を変えて、補完が効くようにしていきます。

Beans の補完

Java Beans を作成して、下のようにインポートして使った際、そんなメソッドないよと赤文字で表示されます。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="user" class="com.kokoiroworks.User" scope="session" />
<html>
<body>
<p>
    ようこそ、 <%= user.getName() %> さん! 
</p>
</body>
</html>

これを解決するには、 *.java のあるディレクトリをソースディレクトリとして設定します。
File -> Project Structure と進み、 ModulesSources タブを開きます。
次に、ディレクトWEB-INF を展開し、 classes ディレクトリを選択します。
最後に、上にある Mark as の部分で、 Sources を選択すれば、完了です。

これで、補完も効くし、エラー表示も消えます。
また、 Paths タブに移動し、 Compiler output のパスを、変更しておく必要もあります。

暗黙オブジェクトの補完

request だとか、そういった Tomcat の暗黙オブジェクトの補完も、うまく効いてくれません。
ということで、こちらも設定で。
上と同様、 File -> Project Structure と進み、 ModuleDependencies タブを開きます。
次に、左側プラスボタンから JARs or directories... を選択。
Tomcat ルートディレクトリへ移動し、 libs から、以下の2つを追加します。

  • jsp-api.jar
  • servlet-api.jar

これで、上と同様、補完が効くようになります。


2016/07/04 追記
上記ディレクトリ構造自体は、あまり良いものではないらしいので、
調べた限りでは、 Gradle 等ビルドツールを使って、以下の様な感じになるのが多そうです。

ROOT
|-src
| |-main
| | |-java
| | | |-com.example
| | | | |- *.java
| | |
| | |-webapp
| | | |-classes
| | | |-lib
| | | |-web.xml
| | |
| | |-resources
| |
| |-test