とりあえずJSFが動くだけのものを作成。
web.xml
Faces Servletに「/faces/*」をマッピング。「TOMCAT_HOME\webapps\apname\WEB-INF」下に配置する。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<!-- JSF Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>
faces-config.xml
画面遷移はないので雛型のみ。web.xmlと同じく。「TOMCAT_HOME\webapps\apname\WEB-INF」下に配置する。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
</faces-config>
JSPファイル
input.jspというのを仮に作って、JSFのタグを記入する。「TOMCAT_HOME\webapps\apname」下に配置する。
input.jsp(バージョン1)
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<body>
<f:view>
<h2>hello</h2>
</f:view>
</body>
</html>
動作確認
以下のアドレスにアクセス。
http://localhost/apname/faces/input.jsp
helloと表示されればOK。
上のアドレスを見ると、通常は
http://localhost/apname/input.jsp
でアクセスしないといけないように思える。しかし、このアドレスでアクセスすると
javax.servlet.ServletException: Cannot find FacesContext
と怒られてしまう。どうもweb.xmlで設定したFaces Servlet Mappingを使わないとだめらしい。なので、「/faces」をはさんだアドレスじゃないといけない。
ということはデフォルトのページであるindex.jspにアクセスする場合も「/faces/index.jsp」となってしまう。できれば「/apname/」でアクセスしたい。こういう場合はindex.jspを以下のようにすればいい。
<jsp:forward page="faces/input.jsp" />
これによって「/apname/」で「/faces/input.jsp」にアクセスされるようになる。