JSFを拡張子htmlで動くようにする
これまでJSFの動作対象URLを「拡張子xhtml」にしていたのですが「html」で動くようにしたい。
ついでに、xhtmlへの直接アクセスを禁止したい。
というわけでちょっと手を加えました。
web.xml
FacesServletが動作対象とするservlet-mappingを書き換えます。
旧)
<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>
新)
<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
拡張子を変えただけ。
Filterを追加
拡張子xhtmlへの直接アクセスを禁止します。
@WebFilter(urlPatterns = "*.xhtml", dispatcherTypes = { DispatcherType.REQUEST }) public class XhtmlProhibitionFilter implements Filter { @Override public void doFilter(final ServletRequest pRequest, final ServletResponse pResponse, final FilterChain pChain) throws IOException { ((HttpServletResponse) pResponse).sendError(HttpServletResponse.SC_NOT_FOUND); } @Override public void init(final FilterConfig pFilterConfig) { // 処理なし } @Override public void destroy() { // 処理なし } }
こっちはもう少し良い方法があるかもしれません。