JSF 站在 JSP 巨人肩膀上,屬事件驅動型組件模型,而非單純 MVC 框架(如 Struts)。提供動態統一標籤庫,組件具狀態、可重用。
jsf-impl.jar、jsf-api.jar、commons-*.jar、jstl.jar、standard.jar 放入 WEB-INF/libfaces-config.xml,為 JSF 核心配置檔<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/welcome.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>com.demo.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
作用域:request(請求級)、session(會話級)、application(應用級)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml"
xmlns:h="https://java.sun.com/jsf/html"
xmlns:f="https://java.sun.com/jsf/core">
<h:head><title>JSF Demo</title></h:head>
<h:body>
<h:form>
<h:inputText value="#{user.name}" />
<h:commandButton value="送出" action="#{user.submit}" />
</h:form>
</h:body>
</html>
重點:
xmlns:h/xmlns:f<h:form> 內#{...} 綁定屬性與動作部署至 JBoss/Tomcat,訪問 https://localhost:8080/proj/index.jsf,觀察組件渲染與導航運作。