JSP2.0はJSP1.2を拡張したものです。J2SE 1.3以上、Servlet 2.4仕様の環境で動作させることができます。 大きな変更点のひとつにExpression Languageの導入があります。この機能を使うことでJSP1.xで記述していた スクリプトレット形式をタグ形式に変更することができるので、JSPの可視性が向上します。またif,forなどの 制御文もELで実現されました。ほかには、Tag Filesをいうタグライブラリの拡張機能があります。今までの タグライブラリは、多くの設定ファイルが必要でした。これを簡素化することができます。XML View機能は JSPをXMLで処理できるようにする機能です。XMLは多くのプログラミング言語から解析(parse:パース)する事が できるので、今後JSPは、表示するだけのテクノロジーだけでなくデータのやり取りなどでも使われてきそうです。 それでは、早速はじめてみましょう。。。
ここでは、SDK(Software Development Kit)のインストール方法は説明していません。
SDKのインストール方法がわからない方はJava入門を確認してみてください。
Tomcat 5.0.9のインストールを説明します。Tomcat 5.0.9はインストールウィザードがあるので、
特に迷うことなくインストールできると思います。
インストールウィザードが開始されます。
まだ英語版のようですがそのまま、Nextを選択します。

ライセンスの確認です。I Agreeを選択します。

今回は、Normalでインストールします。
Fullインストールだと、ソースコード、windowsサービスへの登録が行われます。
Examplesは参考になりますのでインストールしましょう。

インストール先を指定します。どこでもかまいませんが、今回はC:\直下にインストールします。

Tomcat4.xからWeb管理ができるようになりました。その管理ツールの管理者パスワードを指定します。
とりあえず、開発するのでadminで問題ないでしょう。

インストーラがJVMの場所を勝手に探してくれます。そのまま選択してください。
VMをいくつかインストールしている方は、1.3 laterでなければならないようです。
JSP2.0のSpecificationに書いてありました。

インストールが開始されます。コーヒーでも飲んで待ちましょう。

終了したらそのままFinishを押しましょう

アドレスを指定して(http://127.0.0.1:8080)ブラウザで動作しているか確認してみてください。
Tomcatが起動していなかったら以下のバッチファイルで起動してみてください。
C:\Tomcat 5.0\bin\startup.bat
テスト用のコンテキストを作成します。
下記の図のようにwebappsフォルダ内にhoge\WEB-INF\classesを作成してください。
今後、開発はこのコンテキスト内で行います。

またこのコンテキストの設定ファイルも作る必要があります。
設定ファイル名はweb.xmlで必須となります。
これは、hogeフォルダに置きます。以下にサンプルを載せておきます。
<?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 web-app_2_4.xsd"
version="2.4">
<description>
hoge
</description>
<display-name>hoge</display-name>
</web-app>
もう一度、フォルダの図を見てもらいたいのですが、Tomcat 5.0\webappを確認すると 最初からjsp-examples, ROOT, servlet-example, tomcat-docsというコンテキストが 存在するのがわかると思います。是非web.xmlがどこに置かれているかなど確認してみてください。
package hoge;
public class FunctionHoge {
public static String addString(String str1, String str2) {
return "<h1>" + str1 + " java " + str2 + "</h1>";
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<taglib 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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>/SimpleTagLibrary</uri>
<function>
<description>hoge</description>
<name>addString</name>
<function-class>hoge.FunctionHoge</function-class>
<function-signature>java.lang.String addString( java.lang.String, java.lang.String)</function-signature>
</function>
</taglib>
<%@ taglib uri="/WEB-INF/hoge-taglib.tld" prefix="hoge" %>
<html>
<head>
<title>Functions</title>
</head>
<body>
${hoge:addString("hello","world")}
</body>
</html>
<?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 web-app_2_4.xsd"
version="2.4">
<description>
hoge
</description>
<display-name>hoge</display-name>
<jsp-config>
<taglib>
<taglib-uri>
http://127.0.0.1/hoge-taglib
</taglib-uri>
<taglib-location>
/WEB-INF/hoge-taglib.tld
</taglib-location>
</taglib>
</jsp-config>
</web-app>
上記のようにweb.xmlを指定した場合は、
package hoge;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
public class HelloWorld extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("<h1>Hello Java World!</h1>");
}
}
タグディスクリプタhoge-taglib.tldの登録
<?xml version="1.0" encoding="UTF-8" ?>
<taglib 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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>/SimpleTagLibrary</uri>
<tag>
<description>SimpleTag</description>
<name>helloworld</name>
<tag-class>hoge.HelloWorld</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
表示するJSP(hello.jsp)の作成
<%@ page contentType="text/html; charset=iso-8859-1" %>
<%@ taglib uri="/WEB-INF/hoge-taglib.tld" prefix="hoge" %>
<html>
<head>
<title>Functions</title>
</head>
<body>
<hoge:helloworld/>
</body>
</html>
http://127.0.0.1:8080/hoge/hello.jspと入力して表示して確認してみましょう。以下のように表示されると思います。

<jsp:include>のようにファイルを読み込む機能です。<jsp:include>と 異なるのは、タグを記述して読み込むため、属性を指定できることです。 以下は属性に色を指定したサンプルです。
まず、.tagファイルを作成します。これは/WEB-INF/tagsディレクトリに保存します。 (style.tag)
<%@ attribute name="color" %>
<span style="background-color:${color}"><jsp:doBody/></span>
次にコンテキスト直下に表示するためのJSPを作成します。(view.jsp)
<%@ page contentType="text/html; charset=iso-8859-1" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<html>
<head>
<title>view.jsp</title>
</head>
<body>
<tags:style color="#ff0000">red</tags:style><br>
<tags:style color="#00ff00">green</tags:style><br>
<tags:style color="#0000ff">blue</tags:style><br>
</body>
</html>
タグの指定の仕方は以下のようになります。http://127.0.0.1:8080/hoge/view.jspと入力して表示して確認してみましょう。以下のように表示されると思います。

スクリプトレス(scriptless)
JSP1.xでのJSP開発では、<%記号によるスクリプトレットを宣言しその中にJavaソースを記述することで
開発していました。Perlなどのスクリプト言語のように手動でコンパイルせずに開発できるのは効率上よかったのですが、可視性に優れませんでした。
JSP2.0からはスクリプトレットをJSPから排除しようとするスクリプトレスが1つのテーマになっています。