今さらながらStruts+Tomcatの環境周りまとめ
研修の講師をやることになり、サンプルアプリを作ることになったので、Struts+Tomcatでアプリを作ろうとしたら、開発環境構築で大分躓いてしまいました。久しぶりでほとんど覚えてなかったのでメモっておきます。
使用したStrutsのバージョンは1.2.9、Tomcatのバージョンは5.5です。*1
Tomcatと各JavaEE仕様のバージョンの対応
JavaEE | Servlet | JSP | EJB | JSF | 備考 | |
---|---|---|---|---|---|---|
Tomcat4.x | 1.3 | 2.3 | 1.2 | 2.0 | ||
Tomcat5.x | 1.4 | 2.4 | 2.0 | 2.1 | ||
Tomcat6.x | 5.0 | 2.5 | 2.1 | 3.0 | 1.2 | JAX-WS2.0、JAXB2.0、JPA1.0、JSFとJSTLの共存が可能 |
Tomcat7.x | 6.0 | 3.0 | 2.2/EL2.2 | 3.1 | 2.0 | JAX-RS、CDIなどが追加、JAX-WS2.2、JAXB2.2、JPA2.0 |
JSTL/EL式とTomcatとの関係
JSTL | EL式 | 備考 | |
---|---|---|---|
Tomcat4.x | 1.0 | △ | ※EL式使うときはJSTL1.0が必須 |
Tomcat5.X | 1.1 | ○ | ※JSTLなくてもEL式は使用可能(JSP2.0の標準仕様、Tomcatがcommons-el.jarを含んでいる) |
Tomcat6.x | 1.1 | ○ | 1.2も使おうと思えば使える |
Tomcat7.x | 1.2 | ○ | JSTL 1.2 には JSP 2.1 コンテナーが必要なこと、またJSTL 1.2 以降では JSTL が Java EE の一部を構成することに注意*2 |
バージョン対応表など詳しくは
その他Tomcat4.xとTomcat5.x以降で気をつけるべきこと
Tomcat4.x
JSTLのtaglib宣言について
実はweb.xml内の
standard.jarの中のMETA-INFフォルダの中にTLDファイルが同梱されており、そのTLDファイルに
各JSPでのpageディレクティブ宣言の共通化
各JSPのヘッダーに記述するJSTLのprefix設定は、下記の方法で共通化しておくとよい。
- 以下のようなJSPを作成しておく
// taglib.jsp <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>false</el-ignored> <page-encoding>UTF-8</page-encoding> <scripting-invalid>false</scripting-invalid> <include-prelude>/pages/taglibs.jsp</include-prelude> </jsp-property-group>