JSPの問題は、タグが有効か、有効な場合は正常に動作するか、動作する場合はどのように動作するか?
という設問が多く出題されると予想できる。
もちろん各タグの記述方法を覚えないといけないが、JSP をJSPとして考えると訳がわからなくなってしまう。
JSPはHTMLと<% %>で囲まれたスクリプトレットで構成されるが、この組み合わせ複雑な場合や<%! %>が出現した場合は一旦JSPをコンパイルしたJAVAコードがどのようになっているかをしっかり確認する必要がある。
場合によってはコードを書いてみる。
つまり頭にJSPコンパイラをインプットしている必要がある。
Tomcatであれば WEB-INF と同じ階層 work というフォルダが作成され、その下にJSPをコンパイルしたJAVAソースコードが出力される。
ここに出力されたあるJSPのコンパイルソースを見ると
public class JspDeclare$jsp extends HttpJspBase {
とある。 HttpJspBase クラスは JspPage インターフェースを継承し、 JspPage は javax.servlet.Servlet インターフェースを継承している。
javax.servlet.Servlet
↑
JspPage
↑
HttpJspBase
つまり JSP1つが1つのサーブレットとして処理される。
これを知った時にJSPに対する考え方が変わった。
元々「所詮JSPはHTMLにJAVAの毛を生やしたようなもんだ」とJ2EEのおまけ的パーツだと決めつけていたが、実は最も簡単に作成可能なサーブレットだったのだ。
まぁ、ほとんど参考書の受け売りなんだけど、JSPを馬鹿にできないことは確か。
(でも最近はVelocityに気持ちが動いていたりする。 JSPを1つも作成しないで開発できちゃうから、この試験のJSPのセクションの意義がなくなるなぁ)