JSF入门之hello world

时间:2021-11-19 17:01:35
关键字: jsf入门

   

       JSF以MVC模式为基础,与Struts不同,JSF的目标是希望以一个与Swing相类似的方式来开发网页,因此,从JSF的结构图当中,他的核心概 念不是页面,而是控件树,也就是说,当用户提交一个请求时,JSF会先将页面上的组件先转换为与Swing当中类似的,由容器和控件组成的控件树,然后数 据和事件被设置到对应的控件上,然后以一种与Swing类似的方式,来处理后续的请求。控件树是整个JSF的核心,所有其他的一切一切都是围绕着这棵控件 树展开的

      JSF的处理核心是控件树,他会先将页面上所声明的控件转换为一棵控件树,后续的操作将在这颗控件树上进行。为了提高性能,系统会为之前生成的控件树提供 缓存。Restore View的工作就是在缓存当中查找是否存在之前已经生成好的控件树,如果没有,则根据页面的内容,重新生成。

   导入包:

Java代码
  1. jsf-impl.jar  
  2.    * jsf-api.jar  
  3.    * commons-digester.jar  
  4.    * commons-collections.jar  
  5.    * commons-beanutils.jar  
  6.    * jstl.jar  
  7.    * standard.jar  
 jsf-impl.jar     * jsf-api.jar     * commons-digester.jar     * commons-collections.jar     * commons-beanutils.jar     * jstl.jar     * standard.jar

 

web.xml配置

 

Xml代码
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2.  <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  
  6.     version="2.4">  
  7.   
  8.     <description>  
  9.         JSF Demo  
  10.     </description>  
  11.     <display-name>JSF Demo</display-name>  
  12.     <servlet>  
  13.         <servlet-name>Faces Servlet</servlet-name>  
  14.         <servlet-class>  
  15.             javax.faces.webapp.FacesServlet  
  16.         </servlet-class>  
  17.         <load-on-startup>1</load-on-startup>  
  18.     </servlet>  
  19.   
  20.     <servlet-mapping>  
  21.         <servlet-name>Faces Servlet</servlet-name>  
  22.         <url-pattern>*.faces</url-pattern>  
  23.     </servlet-mapping>  
  24.   
  25.     <welcome-file-list>  
  26.         <welcome-file>index.html</welcome-file>  
  27.     </welcome-file-list>  
  28.  </web-app>  
<?xml version="1.0" encoding="ISO-8859-1"?>  <web-app xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"     version="2.4">      <description>         JSF Demo     </description>     <display-name>JSF Demo</display-name>     <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>*.faces</url-pattern>     </servlet-mapping>      <welcome-file-list>         <welcome-file>index.html</welcome-file>     </welcome-file-list>  </web-app>

 定义一个javabean

 

Java代码
  1. package onlyfun.caterpillar;  
  2.   
  3.  public class UserBean {  
  4.     private String name;  
  5.   
  6.     public void setName(String name) {  
  7.         this.name = name;  
  8.     }  
  9.   
  10.     public String getName() {  
  11.         return name;  
  12.     }  
  13.  }  
package onlyfun.caterpillar;   public class UserBean {     private String name;      public void setName(String name) {         this.name = name;     }      public String getName() {         return name;     }  }

  定义一个/WEB-INF/faces-config.xml像struts中的struts-config.xml文件一样,实现跳转:

 

Xml代码
  1. <?xml version="1.0"?>  
  2.  <!DOCTYPE faces-config PUBLIC  
  3.  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"  
  4.  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">  
  5.   
  6.  <faces-config>  
  7.     <navigation-rule>  
  8.         <from-view-id>/pages/index.jsp</from-view-id>  
  9.         <navigation-case>  
  10.             <from-outcome>login</from-outcome>  
  11.             <to-view-id>/pages/welcome.jsp</to-view-id>  
  12.         </navigation-case>  
  13.     </navigation-rule>  
  14.   
  15.     <managed-bean>  
  16.         <managed-bean-name>user</managed-bean-name>  
  17.          <managed-bean-class>  
  18.              onlyfun.caterpillar.UserBean  
  19.          </managed-bean-class>  
  20.         <managed-bean-scope>session</managed-bean-scope>  
  21.     </managed-bean>  
  22.  </faces-config>  
<?xml version="1.0"?>  <!DOCTYPE faces-config PUBLIC  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">   <faces-config>     <navigation-rule>         <from-view-id>/pages/index.jsp</from-view-id>         <navigation-case>             <from-outcome>login</from-outcome>             <to-view-id>/pages/welcome.jsp</to-view-id>         </navigation-case>     </navigation-rule>      <managed-bean>         <managed-bean-name>user</managed-bean-name>          <managed-bean-class>              onlyfun.caterpillar.UserBean          </managed-bean-class>         <managed-bean-scope>session</managed-bean-scope>     </managed-bean>  </faces-config>

 index.jsp

 

Html代码
  1. <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  
  2.  <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  3.  <%@page contentType="text/html;charset=Big5"%>  
  4.  <html>  
  5.  <head>  
  6.  <title>第一个JSF程序</title>  
  7.  </head>  
  8.  <body>  
  9.     <f:view>  
  10.         <h:form>  
  11.             <h3>请输入您的名称</h3>  
  12.             名称: <h:inputText value="#{user.name}"/><p>  
  13.             <h:commandButton value="送出" action="login"/>  //action也可以指定为某类的某个方法,只要该方法返回一个JSF配置文件中的一个跳转
  14.         </h:form>  
  15.     </f:view>  
  16.  </body>  
  17.  </html>  
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  <%@page contentType="text/html;charset=Big5"%>  <html>  <head>  <title>第一个JSF程序</title>  </head>  <body>     <f:view>         <h:form>             <h3>请输入您的名称</h3>             名称: <h:inputText value="#{user.name}"/><p>             <h:commandButton value="送出" action="login"/>         </h:form>     </f:view>  </body>  </html>

 welcome.jsp

Java代码
  1. <strong><%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  
  2.  <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  3.  <%@page contentType="text/html;charset=Big5"%>  
  4.  <html>  
  5.  <head>  
  6.  <title>第一个JSF程序</title>  
  7.  </head>  
  8.  <body>  
  9.     <f:view>  
  10.         <h:outputText value="#{user.name}"/> 您好!  
  11.         <h3>欢迎使用 JavaServer Faces!</h3>  
  12.     </f:view>  
  13.  </body>  
  14.  </html></strong>  
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  <%@page contentType="text/html;charset=Big5"%>  <html>  <head>  <title>第一个JSF程序</title>  </head>  <body>     <f:view>         <h:outputText value="#{user.name}"/> 您好!         <h3>欢迎使用 JavaServer Faces!</h3>     </f:view>  </body>  </html>

 

 

 然后http://localhost:8080/jsfDemo/pages/index.faces ,就可以访问了。