亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

web開發框架——JSF開發實戰一(圖)

2019-11-18 12:31:16
字體:
來源:轉載
供稿:網友

  JSF將是J2EE5.0中所包含的web開發框架,這應該是第一個成為jcp標準,并且隨j2eesdk一起發布的web框架,可以看出sun對它的期望很高。JSF最大的競爭對手是tapestry,是apache的產品,但是apache又弄出了個myfaces,是對jsf標準的一個實現。也許你也和我一樣,在jsf和tapestry之間猶豫很久,將來從apache的態度上應該可以看出二者的走向。在tss上有一篇比較jsf 1.0與tapestry 3.0的文章,內容很扎實到位:http://www.theserverside.com/articles/article.tss?l=JSFTapestry
  
  JSF的競爭對手不是struts/webwork之流,它們基本上已經是不同階段上的東西了,放在一起比較意義不大。
  
  JSF的開發流程和asp.net中所倡導的code behind方式很相似,核心是事件驅動,組件和標簽的封裝程度非常高,很多典型應用已經不需要開發者去處理http。頁面操作會被自動映射到對應的java bean中,后臺邏輯只需要同java bean發生交互。整個過程是通過“依靠注入(DI)”來實現的,看來這是目前解偶合的最佳途徑啊,sPRing的影響真是深遠。不過正式因為jsf采用了這樣的方式,導致開發工作和以前的jsp/struts等都有非常大的不同,需要一定的時間去學習。學習之前建議先對依靠注入有比較清楚的熟悉,可以參考我的learn Spring in spring系列的第一篇。
  
  本系列將以兩個例子來講解jsf的基本開發,第一個例子當然是hello world。目前可用的jsf ide不多,ibm要到06年才能放出支持jsf的wtp版本。所以我們的例子基本以手寫為主,這樣也能讓我們有更清楚的熟悉,同時推薦目前最好的jsf開發工具:myeclipse 4.0 GA。后面的例子將會有jsf和hibernate的內容,它都能給予很好的支持。由于myeclipse并不免費,所以我們除了講解在ide中如何操作外,還會敘述手動操作的具體內容,以免過于依靠開發工具。用什么服務器都可以,這里采用了jboss 4.0.2。假如你的服務器是高版本的tomcat(5.5+),那么必須要刪除它自帶的一些包才能很好的支持jsf,具體細節請查看它的文檔。
  
  請自行下載jsf ri和JSTL 1.1。
  
  廢話少說,開始了。
  
  在myeclipse 4.0GA中新建一個web項目,命名為hello,為項目增加對JSTL的支持:
  
 web開發框架——JSF開發實戰一(圖)(圖一)

  在JSTL的版本中選擇1.1。
  
  該操作實際上是把jstl.jar和standard.jar加到工程中。
  
  采用類似的操作為項目添加對jsf的支持:myeclipse?add jsf capabilities
  
  如圖:
  
 web開發框架——JSF開發實戰一(圖)(圖二)

  其中的jsf implementation是選擇使用哪中JSF實現,我們采用的是sun的jsf ri
  
  JSF config path是配置文件的位置,保持不變
  
  URL pattern是jsf servlet的映射方式,有兩種選擇,具體細節后面說明。
  
  以上操作上是為項目加入了jsf需要的jar和tld文件,并且創建了一個faces-config.xml的配置文件。涉及到的jar有:commons-beanutils.jar  commons-collections.jar    commons-digester.jar  commons-logging.jar  jsf-api.jar    jsf-impl.jar
  
  涉及到了jsf中所有的tld文件。
  
  當前的faces-config.xml文件的內容是:
  
  
  
  
  
  

  
  環境已經建立好了,現在我們要建立一個程序,它的功能是讓用戶在表單中輸入名字,提交后系統會返回一個問候。使用jsf的以后好處是,開發人員會很自然的把mvc各層分開,不會像使用strtus那樣別扭,這一點在后面的開發中感覺得到。
  
  首先開發model層,它是個很簡單的bean:
  package org.bromon.jsf.model.hello;
  
  public class SayHello {
  public String say(String name)
  {
  return "你好,"+name;
  }
  }
  
  在model層中你可以隨意的實現業務的數據邏輯,不需要與web層有任何的關系。
  
  下面開發控制層,它負責存取web層的數據,并且調用model層的邏輯:
  /**
  * jsf的控制層方法
  * @author bromon
  */
  package org.bromon.jsf.control.hello;
  
  import org.bromon.jsf.model.hello.*;
  
  public class HelloDelegater {
  
  //------屬性---------
  private String name;//表單中的文本框數據會傳到這里
  private String result;//web頁會從這里取得運行結果
  private SayHello sayHello;//model層的對象,并不事例化,由系統注入
  
  //-----set/get--------
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public SayHello getSayHello() {
  return sayHello;
  }
  public void setSayHello(SayHello sayHello) {
  this.sayHello = sayHello;
  }
  public String getResult() {
  return result;
  }
  public void setResult(String result) {
  this.result = result;
  }
  
  //-----邏輯方法---------
  public String say()
  {
  this.setResult(sayHello.say(this.getName()));
  return "ok";
  }
  }
  
  需要注重的是,屬性的名字、set/get方法的名字必須嚴格按照java bean規范編寫,因為它們要被注入依靠時使用。sayHello對象并沒有被實例化,它會在運行時由系統注入。
  
  這兩個bean當然要在系統中申明,否則無法實現DI。在faces-config.xml文件中添加內容:
  
  SayHello
  
  org.bromon.jsf.model.hello.SayHello
  

  request
  

  
  HelloDelegater
  
  org.bromon.jsf.control.hello.HelloDelegater
  

  request
  
  sayHello
  #{SayHello}
  

  

  
  在后一個bean中,它的sayHello屬性被指定要在運行時注入一個org.bromon.jsf.model.hello.SayHello的實例。
  
  下面要編寫表示層的頁面,只有一個index.jsp:
  需要引入兩個標簽庫:
  
  <%@ taglib uri="http://java.sun.com/jsf/Html" prefix="h" %>
  <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
  下面是構造jsf標簽:
  
  
  
  
  
  
  
  
  
  
  

  
  
  

  

  

  
  
  頁面中包含了一個文本框和一個label,他們分別被綁定到了HelloDelegater類的兩個屬性上,具體的綁定工作有系統通過翻轉控制的方式調用對應的set/get方式實現。提交按鈕被綁定到了HelloDelegater.say方法,該方法會把計算結果賦給result屬性,它會在頁面中顯示出來。
  
  因為我們在url pattern中選擇了*.faces,所以我們應該訪問如下地址來查看程序:
  http://localhost:8080/hello/index.faces
  相應的,假如你選擇了/faces/*,那么就應該是:
  http://localhost:8080/hello/faces/index.jsp
  
  程序執行結果如下:
  
web開發框架——JSF開發實戰一(圖)(圖三)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品免费网站| 成人激情视频小说免费下载| 久久精品人人做人人爽| 欧美高清第一页| 欧美丰满少妇xxxx| 欧美亚洲免费电影| xvideos亚洲人网站| 插插插亚洲综合网| 欧美大胆在线视频| 成人性生交大片免费观看嘿嘿视频| 久久久久亚洲精品| 亚洲精品一区在线观看香蕉| 久久久精品美女| 成人精品视频99在线观看免费| 亚洲丁香婷深爱综合| 国产精品自产拍在线观看中文| 午夜精品国产精品大乳美女| 久久久黄色av| 伊人伊成久久人综合网站| 国产精品第10页| 91精品久久久久久久久青青| 欧美激情视频一区二区| 日韩精品中文字幕视频在线| 欧美日韩综合视频网址| 亚洲欧美日韩天堂一区二区| 国产视频久久久| 久久在线免费视频| 久久久精品视频成人| 青青草国产精品一区二区| 成人性教育视频在线观看| 亚洲第一av在线| 久久999免费视频| 亚洲伊人一本大道中文字幕| 欧美日韩综合视频| 久久免费福利视频| 免费成人高清视频| 欧洲亚洲免费在线| 一区二区三区www| 亚洲电影免费观看高清完整版在线| 亚洲日韩欧美视频| 欧美在线视频免费| 亚洲国产高清福利视频| 国产视频精品xxxx| 国产精品亚发布| 国产日韩欧美91| 69国产精品成人在线播放| 国产精品久久久久久久久久久久久久| 精品中文字幕久久久久久| 夜夜躁日日躁狠狠久久88av| 国产免费一区视频观看免费| 欧美激情小视频| 成人网页在线免费观看| 亚洲精品www久久久久久广东| 国产小视频91| 亚洲第一精品夜夜躁人人爽| 久久午夜a级毛片| 国产激情综合五月久久| 欧美精品www| 欧美日韩免费在线| 国产一区二区黑人欧美xxxx| 亚洲国产精品va在线观看黑人| 久久免费视频这里只有精品| 91在线视频九色| 国产精品一区二区三区毛片淫片| 久久天天躁日日躁| 亚洲天堂网在线观看| 97精品一区二区视频在线观看| 国产精品日韩专区| 2020久久国产精品| 国产精品久久av| 亚洲精品久久久久中文字幕欢迎你| 久久精品国产亚洲精品| 日韩免费看的电影电视剧大全| 成人午夜两性视频| 久久全球大尺度高清视频| 97在线日本国产| 在线午夜精品自拍| 欧美情侣性视频| 伊人激情综合网| 中文字幕日韩欧美| 亚洲天堂开心观看| 久久亚洲精品国产亚洲老地址| 韩国日本不卡在线| 2018国产精品视频| 久久av资源网站| 亚洲午夜未满十八勿入免费观看全集| 亚洲国产成人av在线| 色琪琪综合男人的天堂aⅴ视频| www.日本久久久久com.| 亚洲大尺度美女在线| 日韩国产高清视频在线| 欧美成人黑人xx视频免费观看| 日韩视频欧美视频| 国产日韩欧美夫妻视频在线观看| 亚洲偷熟乱区亚洲香蕉av| 亚洲女成人图区| 欧美精品免费在线| 欧美性猛交xxxxx水多| 欧美日韩裸体免费视频| 成人免费视频网址| 国产精品久久久久久久9999| 国产v综合ⅴ日韩v欧美大片| 91欧美精品午夜性色福利在线| 国产精品久久久久久久久久东京| 日韩中文字幕国产| 日韩av片永久免费网站| 亚洲另类图片色| 久久久久久12| 欧美三级欧美成人高清www| 亚洲国产精品久久久久秋霞不卡| 亚洲成人网在线观看| 国产成人激情小视频| 亚洲精品久久久久| 欧美成人剧情片在线观看| 日韩极品精品视频免费观看| 欧美资源在线观看| 亚洲系列中文字幕| 欧美美女18p| 日本不卡高字幕在线2019| 日韩av手机在线观看| 亚洲国产成人精品电影| 最新国产成人av网站网址麻豆| 欧美性猛交xxxx| 亚洲国产小视频| 国产精品成人一区| 欧美激情网站在线观看| 欧美有码在线视频| 国产亚洲精品久久久久久| 久久久精品国产亚洲| 中文字幕欧美日韩在线| 久久国产精品网站| 亚洲xxxxx电影| 91夜夜揉人人捏人人添红杏| 亚洲精品免费av| 国产精品久久婷婷六月丁香| 日韩av在线免费看| 亚洲精品欧美极品| 亚洲高清一二三区| 久久精品91久久香蕉加勒比| 久久久精品视频在线观看| 久久精品久久久久电影| 久久人人爽人人| 亚洲女人天堂视频| 色狠狠av一区二区三区香蕉蜜桃| 人人爽久久涩噜噜噜网站| 亚洲成人免费在线视频| 日韩精品在线观| 日韩精品高清视频| 国产性色av一区二区| 亚洲精品日韩欧美| 欧美俄罗斯乱妇| 精品久久久久久中文字幕| 欧美片一区二区三区| 亚洲欧洲在线视频| 疯狂做受xxxx高潮欧美日本| 日韩精品中文字幕在线播放| 精品一区精品二区| 色偷偷噜噜噜亚洲男人的天堂| 欧美第一黄色网| 中国日韩欧美久久久久久久久| 亚洲第一中文字幕在线观看| 欧美人在线视频| 亚洲a在线观看| 国产精品jizz在线观看麻豆|