第一個JSF Demo

來源:互聯網
上載者:User
文章目錄
  • JavaServer Faces 的 MVC 實現

 

簡介

JavaServer Faces (JSF) 是一種用於構建 Web 應用程式的新標準 Java 架構。它提供了一種以組件為中心來開發 Java Web 使用者介面的方法,從而簡化了開發。JavaServer Faces 還引起了廣大 Java/Web 開發人員的興趣。“企業開發人員”和 Web 設計人員將發現 JSF 開發可以簡單到只需將使用者介面 (UI) 組件拖放到頁面上,而“系統開發人員”將發現豐富而強健的 JSF API 為他們提供了無與倫比的功能和編程靈活性。JSF 還通過將良好構建的模型-視圖-控制器 (MVC) 設計模式整合到它的體繫結構中,確保了應用程式具有更高的可維護性。最後,由於 JSF 是通過 Java Community Process (JCP) 開發的一種 Java 標準,因此開發工具供應商完全能夠為 JavaServer Faces 提供便於使用的、高效的可視化開發環境。

 

體繫結構JavaServer Faces 的 MVC 實現

JSF 的主要優勢之一就是它既是 Java Web 使用者介面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的架構。使用者介面代碼(視圖)與應用程式資料和邏輯(模型)的清晰分離使 JSF 應用程式更易於管理。為了準備提供頁面對應用程式資料訪問的 JSF 上下文和防止對頁面未授權或不正確的訪問,所有與應用程式的使用者互動均由一個前端“Faces”servlet(控制器)來處理。

 

 

圖 1:JavaServer Faces 的 MVC 實現

 

具體DEMO

匯入jar包

jsf-impl.jar

jsf-api.jar

jstl-1.2.jar

package org.service;

/**
 *@author:張奇峰
 *2009-7-2 下午08:55:30
 */
public class Calculate {
 
  private double num1;
 
  private double num2;
 
  private double result;
 
  public double getNum1() {
  return num1;
 }

 public double getNum2() {
  return num2;
 }

public double getResult() {
 return result;
}

public void setNum1(double num1) {
 this.num1 = num1;
}

public void setNum2(double num2) {
 this.num2 = num2;
}

//計算兩數之和
private double sum(double num1,double num2)
{
   return num1+num2;
}

public String calculateSum()
{   
  result=sum(num1, num2);
     return "success"; 
}

 
}

 

頁面是index.jsp和result.jsp

 

index.jsp

<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>第一個JSF</title>
  </head>
  <body>
   <f:view>
   <h:form>
   <h:panelGrid columns="3">
  
   <h:outputLabel value="第一個數"></h:outputLabel>
   <h:inputText id="num1" value="#{calculate.num1}"></h:inputText>

<!---這個綁定的時候 會調用calculate.getNum1()  -->
   <h:message for="num1"></h:message><!--num1輸入錯誤輸出錯誤資訊-->
   
   <h:outputLabel value="第二個數"></h:outputLabel>
   <h:inputText id="num2" value="#{calculate.num2}"></h:inputText>
   <h:message for="num2"></h:message>

   <h:commandButton value="計算和" action="#{calculate.calculateSum}"></h:commandButton>
   <!--調用這個計算兩數之和的方法時  先會調用calculate.setNum1()和calculate.setNum2()   然後在執行這個計算方法  所以在 Calculate類中要給這兩個數都含有get() 和 set() -->
   </h:panelGrid>
   </h:form>
   </f:view>
  </body>
</html>

result.jsp

<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>計算結果</title>
  </head>
  <body>
 <f:view>
   <h:outputText value="#{calculate.num1}"/> 
   與
   <h:outputText value="#{calculate.num2}"/>
   的和為:<h:outputText value="#{calculate.result}"/>
 </f:view>
  </body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern><!--訪問的時候都以.faces訪問  可修改-->
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">
<managed-bean>
<managed-bean-name>calculate</managed-bean-name>
<managed-bean-class>org.service.Calculate</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<navigation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/result.jsp</to-view-id>
</navigation-case>

</navigation-rule>
</faces-config>

 

 

訪問  http://localhost:8080/JSFDemo/index.faces 

第一個數
第二個數

點擊按鈕轉寄到result.jsp

顯示 :6.0 與 4.0 的和為:10.0

總結:以前也用過Struts  此前JSF也經常被用來兩者相比較   個人覺得兩者的設計思想有點類似 都是那種觸發似的,但也有不同  此是事件驅動之  而Struts更像是提交式   

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.