JSPディレクティブを省略する方法

意外と知られていないようなので、紹介します。JSPの先頭にはお決まりのようにJSPディレクティブを記述しますが、これが省略できたら便利だと思いませんか?

hoge.jsp(省略前)

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="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="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


...

実はできるんです。
(たぶん)ServletAPI2.4の仕様だと思いますが、web.xmlに以下の設定をして、インクルードするファイルを指定することで、JSP先頭の宣言を省略することができます。

web.xml


  ...
  
    ...
    
       *.jsp
       false
       UTF-8
       false

/header.jsp

header.jsp

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="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="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

hoge.jsp(省略後)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


...