Struts 2 技術(shù)詳解

出版時間:2008-6  出版社:電子工業(yè)出版社  作者:閆術(shù)卓 等編著  頁數(shù):630  字?jǐn)?shù):965000  
Tag標(biāo)簽:無  

內(nèi)容概要

Struts 2框架是Struts 1.X的替代版本,Struts 2框架整合了Struts 1.X框架和WebWork框架的優(yōu)點。相對Struts 1.X,Struts 2已經(jīng)有了非常大的改變,去掉了ActionForm,降低了框架組件之間的耦合性,Struts 2的Action只是普通的Java類(POJO),給模塊測試工作帶來了極大的方便。Struts 2提供了強大的整合能力,支持多種返回結(jié)果類型,改進了Struts 1.X的標(biāo)簽庫,引入OGNL表達(dá)式和值棧的概念,給開發(fā)者帶來了更好的體驗。    本書結(jié)合Struts 2框架的技術(shù)特點,從最基礎(chǔ)的框架處理機制講起。介紹了Struts 2框架的核心組件和核心處理機制,并介紹了攔截器、國際化、輸入校驗、類型轉(zhuǎn)換等Struts 2關(guān)鍵技術(shù),同時介紹了如何在Struts 2框架中整合其他開源技術(shù)。    本書非常適合有過Struts 1.X和WebWork開發(fā)經(jīng)驗的讀者,以及Java Web開發(fā)的初學(xué)者,對于Web高級開發(fā)者,也是一本非常好的參考書。

書籍目錄

第一篇  Struts 2零基礎(chǔ)詳解 第1章  Struts 2概述	  1.1  MVC介紹	   1.1.1  Web技術(shù)發(fā)展	   1.1.2  MVC設(shè)計模式	   1.1.3  MVC的處理過程	   1.1.4  MVC的優(yōu)點	   1.1.5  MVC的適用范圍	   1.1.6  Model 1和Model 2體系介紹	  1.2  Struts 1簡介	   1.2.1  Struts 1框架介紹	   1.2.2  web.xml配置文件	   1.2.3  struts-config.xml配置文件	   1.2.4  Action和ActionForm	   1.2.5  Struts 1處理過程	   1.2.6  Struts 1的優(yōu)點	   1.2.7  Struts 1的缺點	  1.3  WebWork簡介	   1.3.1  WebWork框架	   1.3.2  WebWork的特性	  1.4  Struts 2概述	   1.4.1  Struts 2框架	   1.4.2  Struts 2配置文件	   1.4.3  Struts 2控制器	   1.4.4  Struts 2標(biāo)簽庫	   1.4.5  Struts 2與Struts 1比較	   1.4.6 Struts 2與WebWork比較	  1.5  為什么使用Struts 2	  1.6  本章小結(jié)	 第2章  Struts 2的HelloWorld	  2.1  搭建Struts開發(fā)環(huán)境	   2.1.1  安裝JDK	   2.1.2  安裝Eclipse	   2.1.3  安裝Tomcat	   2.1.4  安裝Struts 2	   2.1.5  Eclipse安裝Struts 2	  2.2  一個簡單的HelloWorld	   2.2.1  配置web.xml文件	   2.2.2  配置struts.xml文件	   2.2.3  Action業(yè)務(wù)控制器	   2.2.4  視圖資源	   2.2.5  運行HelloWorld	   2.2.6  HelloWorld小結(jié)	  2.3  Struts 2特性演示	   2.3.1  基本實現(xiàn)	   2.3.2  標(biāo)簽庫	   2.3.3  改進Action	   2.3.4  國際化	   2.3.5  數(shù)據(jù)校驗:使用validate()方法校驗	   2.3.6  數(shù)據(jù)校驗:使用框架校驗	  2.4  本章小結(jié)	 第3章  Struts 2核心剖析	  3.1  Struts 2工作流程	   3.1.1  核心控制器FilterDispatcher	   3.1.2  業(yè)務(wù)控制器Action	   3.1.3  業(yè)務(wù)模型組件	   3.1.4  視圖組件	  3.2  Struts 2配置文件	   3.2.1  配置web.xml文件	   3.2.2  配置struts.xml文件	   3.2.3  常量配置	   3.2.4  包配置	   3.2.5  命名空間配置	   3.2.6  包含配置	   3.2.7  Bean配置	   3.2.8  攔截器配置	   3.2.9  配置struts.properties文件	   3.2.10  配置通配符	   3.2.11  Struts 2的零配置	  3.3  Struts 2的Action	   3.3.1  Action實現(xiàn)類	   3.3.2  實例驗證:Action屬性和用戶參數(shù)之間的關(guān)系	   3.3.3  Action訪問ActionContext	   3.3.4  值棧(ValueStack)	   3.3.5  Action直接訪問Servlet API	   3.3.6  Action的配置	   3.3.7  Action的動態(tài)方法調(diào)用	   3.3.8  通配符配置	  3.4  處理結(jié)果	   3.4.1  處理結(jié)果流程	   3.4.2  配置result	   3.4.3  result的類型	   3.4.4  action-chain類型示例	   3.4.5  Freemarker類型示例	   3.4.6  redirect類型示例	   3.4.7  redirect-action類型示例	   3.4.8  Stream類型示例	   3.4.9  使用通配符動態(tài)配置result	   3.4.10  使用OGNL動態(tài)配置result	  3.5.  模型驅(qū)動	   3.5.1  模型驅(qū)動的意義	   3.5.2  模型驅(qū)動示例	   3.6.  異常處理	  3.6.1  Java的異常處理	   3.6.2  Struts 2框架的異常處理	   3.6.3  異常的配置	  3.7  如何提高Struts 2性能	  3.8  支持Struts 2框架的應(yīng)用服務(wù)器	  3.9  本章小結(jié)	第二篇  Struts 2框架技術(shù) 第4章  國際化	  4.1  軟件的國際化	  4.2  Java的國際化支持	   4.2.1  使用資源文件	   4.2.2  使用資源類文件	   4.2.3  MessageFormat類	   4.3  Struts 2的國際化支持	   4.3.1  配置資源文件	   4.3.2  Struts 2國際化應(yīng)用	   4.3.3  使用占位符	   4.3.4  包范圍資源文件	   4.3.5  Action范圍資源文件	   4.3.6  臨時資源文件	   4.3.7  加載資源文件的順序	  4.4  動態(tài)訪問國際化資源文件	   4.4.1  動態(tài)訪問國際化資源文件原理	   4.4.2  建立資源文件和配置文件	   4.4.3  建立Action和JSP	   4.4.4  動態(tài)訪問資源文件示例	  4.5  Eclipse編寫資源文件的插件	  4.6  本章小結(jié)	 第5章  Struts 2進階——攔截器	  5.1  攔截器介紹	   5.1.1  AOP介紹	   5.1.2  攔截的實現(xiàn)原理	   5.1.3  攔截的意義	  5.2  Struts 2攔截器	   5.2.1  Struts 2攔截器原理	   5.2.2  HelloWorld攔截器	   5.2.3  定義攔截器	   5.2.4  使用攔截器	   5.2.5  默認(rèn)攔截器	  5.3  自定義攔截器	   5.3.1  自定義攔截器實現(xiàn)類	   5.3.2  使用自定義攔截器	  5.4  攔截器深度剖析	   5.4.1  攔截器的方法過濾	   5.4.2  攔截器的執(zhí)行順序	   5.4.3  攔截結(jié)果監(jiān)聽器	   5.4.4  設(shè)置攔截器棧中攔截器參數(shù)	   5.4.5  Struts 2框架的系統(tǒng)攔截器	  5.5  攔截器應(yīng)用示例	   5.5.1  權(quán)限攔截器	   5.5.2  配置攔截器	   5.5.3  業(yè)務(wù)控制器Action	   5.5.4  JSP視圖	   5.5.5  運行示例	  5.6  本章小結(jié)	 第6章  Struts 2的類型轉(zhuǎn)換	  6.1  類型轉(zhuǎn)換	  6.2  編寫一個類型轉(zhuǎn)換器	   6.2.1  類型轉(zhuǎn)換需求	   6.2.2  編寫自定義類型轉(zhuǎn)換器	   6.2.3  視圖資源文件	   6.2.4  運行示例	  6.3  自定義類型轉(zhuǎn)換器	   6.3.1  基于OGNL的類型轉(zhuǎn)換器	   6.3.2  基于Struts 2的類型轉(zhuǎn)換器	   6.3.3  注冊自定義類型轉(zhuǎn)換器	   6.3.4  數(shù)組屬性類型轉(zhuǎn)換器	   6.3.5  集合屬性類型轉(zhuǎn)換器	  6.4  使用Struts 2的類型轉(zhuǎn)換	   6.4.1  Struts 2系統(tǒng)內(nèi)建的類型轉(zhuǎn)換器	   6.4.2  項目應(yīng)用中常見的類型轉(zhuǎn)換	   6.4.3  使用OGNL表達(dá)式	   6.4.4  使用集合類型屬性	   6.4.5  使用Set類型屬性	  6.5  類型轉(zhuǎn)換中的異常處理	   6.5.1  類型轉(zhuǎn)換異常攔截器	   6.5.2  一個簡單的類型轉(zhuǎn)換異常處理	   6.5.3  改進類型轉(zhuǎn)換異常顯示信息	   6.5.4  處理復(fù)合類型轉(zhuǎn)換異常	  6.6  本章小結(jié)	 第7章  輸入校驗	  7.1  輸入校驗介紹	   7.1.1  輸入校驗的原因	   7.1.2  使用JavaScript完成客戶端校驗	  7.2  使用validate方法進行輸入校驗	   7.2.1  validate()方法輸入校驗	   7.2.2  validateXxx()方法輸入校驗	   7.2.3  輸入校驗流程	  7.3  基于框架的輸入校驗	   7.3.1  使用字段校驗的輸入校驗	   7.3.2  使用客戶端的輸入校驗	   7.3.3  使用非字段校驗的輸入校驗	   7.3.4  輸入校驗的國際化信息	   7.3.5  校驗的搜索順序	  7.4  AJAX輸入校驗	   7.4.1  配置AJAX環(huán)境	   7.4.2  建立業(yè)務(wù)控制器	   7.4.3  建立校驗規(guī)則文件	   7.4.4  建立JSP視圖	   7.4.5  運行AJAX校驗示例	  7.5  復(fù)合類型屬性的輸入校驗	   7.5.1  復(fù)合屬性的校驗	   7.5.2  集合屬性的校驗	  7.6  Struts 2框架的校驗器	   7.6.1  內(nèi)建校驗器	   7.6.2  類型轉(zhuǎn)換校驗器	   7.6.3  日期校驗器	   7.6.4  浮點數(shù)值校驗器	   7.6.5  郵件地址校驗器	   7.6.6  表達(dá)式校驗器	   7.6.7  字段表達(dá)式校驗器	   7.6.8  整數(shù)校驗器	   7.6.9  正則表達(dá)式校驗器	   7.6.10  必填校驗器	   7.6.11  必填字符串校驗器	   7.6.12  字符串長度校驗器	   7.6.13  網(wǎng)址校驗器	   7.6.14  visitor校驗器	  7.7  本章小結(jié)	 第8章  OGNL	  8.1  OGNL基礎(chǔ)知識	   8.1.1  OGNL的優(yōu)勢	   8.1.2  OGNL語法	   8.1.3  一個使用OGNL的示例	  8.2  Struts 2的OGNL	   8.2.1  Struts 2的OGNL表達(dá)式	   8.2.2  OGNL的集合操作	   8.2.3  Lambda表達(dá)式	  8.3  Struts 2中使用OGNL	   8.3.1  業(yè)務(wù)控制器	   8.3.2  JSP視圖	   8.3.3  運行示例	   8.3.4  OGNL中的#、%和$符號	  8.4  本章小結(jié)	 第9章  Struts 2標(biāo)簽庫	  9.1  Struts 2標(biāo)簽庫概述	   9.1.1  標(biāo)簽庫簡介	   9.1.2  Struts 2標(biāo)簽庫組成	   9.1.3  Struts 2標(biāo)簽庫的使用	   9.1.4  Struts 2同Struts 1標(biāo)簽庫的比較	  9.2  控制標(biāo)簽	   9.2.1  if/elseif/else標(biāo)簽	   9.2.2  iterator標(biāo)簽	   9.2.3  append標(biāo)簽	   9.2.4  generator標(biāo)簽	   9.2.5  merge標(biāo)簽	   9.2.6  subset標(biāo)簽	   9.2.7  sort標(biāo)簽	  9.3  數(shù)據(jù)標(biāo)簽	   9.3.1  action標(biāo)簽	   9.3.2  bean標(biāo)簽	   9.3.3  date標(biāo)簽	   9.3.4  debug標(biāo)簽	   9.3.5  include標(biāo)簽	   9.3.6  param標(biāo)簽	   9.3.7  push標(biāo)簽	   9.3.8  set標(biāo)簽	   9.3.9  url標(biāo)簽	   9.3.10  property標(biāo)簽	  9.4  主題與模板	   9.4.1  主題	   9.4.2  模板	  9.5  表單標(biāo)簽	   9.5.1  表單標(biāo)簽通用屬性	   9.5.2  checkbox標(biāo)簽	   9.5.3  checkboxlist標(biāo)簽	   9.5.4  combobox標(biāo)簽	   9.5.5  doubleselect標(biāo)簽	   9.5.6  datetimepicker標(biāo)簽	   9.5.7  head標(biāo)簽	   9.5.8  file標(biāo)簽	   9.5.9  hidden標(biāo)簽	   9.5.10  select標(biāo)簽	   9.5.11  optiontransferselect標(biāo)簽	   9.5.12  radio標(biāo)簽	   9.5.13  optgroup標(biāo)簽	   9.5.14  token標(biāo)簽	   9.5.15  textarea標(biāo)簽	   9.5.16  updownselct標(biāo)簽	   9.5.17  password標(biāo)簽	   9.5.18  textfield標(biāo)簽	  9.6  非表單標(biāo)簽	   9.6.1  actionerror和actionmessage標(biāo)簽	   9.6.2  component標(biāo)簽	   9.6.3  tree和treenode標(biāo)簽	  9.7  本章小結(jié)	 第10章  AJAX技術(shù)支持	  10.1  AJAX介紹	   10.1.1  為什么使用AJAX	   10.1.2  AJAX技術(shù)	   10.1.3  常見的瀏覽器端AJAX框架	   10.1.4  常見的服務(wù)器端AJAX框架	  10.2  Struts 2的AJAX支持	   10.2.1  ajax主題	   10.2.2  AJAX輸入校驗	   10.2.3  div標(biāo)簽	   10.2.4  a標(biāo)簽	   10.2.5  submit標(biāo)簽	   10.2.6  autocompleter標(biāo)簽	   10.2.7  tabbedPanel標(biāo)簽	   10.2.8  AJAX表單	   10.2.9  widgets	  10.3  本章小結(jié)	 第11章  文件的上傳與下載	  11.1  Struts 2框架的文件上傳	   11.1.1  Common-fileUpload組件	   11.1.2  文件上傳的JSP	   11.1.3  文件上傳的Action	   11.1.4  配置文件和success視圖	   11.1.5  運行文件上傳示例	   11.1.6  上傳文件的過濾	   11.1.7  文件上傳的常量	  11.2  多個文件上傳	   11.2.1  使用數(shù)組上傳多個文件	   11.2.2  使用List上傳多個文件	  11.3  Struts 2控制文件下載	   11.3.1  在配置文件中指定下載資源	   11.3.2  在Action中指定下載資源	   11.3.3  文件下載的權(quán)限控制	  11.4  本章小結(jié)	第三篇  Struts 2框架中整合其他技術(shù) 第12章  使用FreeMarker技術(shù)	  12.1  FreeMarker介紹	   12.1.1  FreeMarker基礎(chǔ)	   12.1.2  FreeMarker簡單示例	  12.2  Struts 2中使用FreeMarker	   12.2.1  FreeMarker使用Struts 2標(biāo)簽庫	   12.2.2  FreeMarker訪問Servlet和JSP對象	   12.2.3  使用FreeMarker示例	  12.3  本章小結(jié)	 第13章  整合Spring	  13.1  Spring介紹	   13.1.1  IoC和DI	   13.1.2  Spring優(yōu)點	  13.2  Struts 2整合Spring	   13.2.1  整合步驟	   13.2.2  整合原理	  13.3  整合開發(fā)示例	  13.4  本章小結(jié)	 第14章  整合JSF	  14.1  JSF介紹	   14.1.1  JSF體系結(jié)構(gòu)	   14.1.2  JSF同Struts 2的比較	   14.1.3  MyFaces	  14.2  Struts 2整合MyFaces	   14.2.1  整合步驟	   14.2.2  整合原理	  14.3  整合MyFaces示例	   14.3.1  JSP視圖	   14.3.2  配置文件	   14.3.3  業(yè)務(wù)控制器Action	   14.3.4  運行示例	  14.4  本章小結(jié)	 第15章  Struts 2訪問MySQL數(shù)據(jù)庫	  15.1  MySQL下載和安裝	   15.1.1  下載MySQL數(shù)據(jù)庫	   15.1.2  安裝MySQL數(shù)據(jù)庫服務(wù)器	   15.1.3  安裝MySQL數(shù)據(jù)庫的JDBC驅(qū)動	  15.2  訪問MySQL數(shù)據(jù)庫示例	   15.2.1  創(chuàng)建一個數(shù)據(jù)庫	   15.2.2  建立JDBC連接	   15.2.3  使用Tomcat數(shù)據(jù)源	   15.2.4  建立一個數(shù)據(jù)庫連接組件	  15.3  本章小結(jié)	 第16章  整合Log4.j	  16.1  Log4.j概述	  16.2  配置和使用Log4.j	   16.2.1  一個簡單的例子	   16.2.2  Log4.j的配置文件	   16.2.3  在代碼中使用記錄日志	  16.3  本章小結(jié)	 第17章  整合ant	  17.1  概述	  17.2  安裝運行	   17.2.1  ant安裝配置	   17.2.2  HelloWorld實例	   17.2.3  Web應(yīng)用結(jié)構(gòu)	   17.2.4  ant運行命令	  17.3  build.xml的基本結(jié)構(gòu)	  17.4  ant任務(wù)	   17.4.1  常用內(nèi)置任務(wù)	   17.4.2  擴展可選任務(wù)	  17.5  完整的build.xml例子	  17.6  深入build.xml	   17.6.1  project	   17.6.2  target	   17.6.3  task	   17.6.4  properties	   17.6.5  token filters	   17.6.6  path-like structure	   17.6.7  命令行變量	   17.6.8  references	  17.7  Eclipse 3.x中使用ant	  17.8  JBuilder 2005中使用ant	  17.9  本章小結(jié)	 第18章  整合JUnit	  18.1  JUnit概述	  18.2  JUnit安裝運行	   18.2.1  安裝配置	   18.2.2  基本測試HelloWorld	   18.2.3  JUnit的3種結(jié)果界面	  18.3  測試Struts 2應(yīng)用	   18.3.1  Struts 2測試概述	   18.3.2  創(chuàng)建測試類	  18.4  在Eclipse 3.x中執(zhí)行測試	  18.5  在JBuilder 2005中執(zhí)行測試	  18.6  本章小結(jié)	 第19章  整合Hibernate	  19.1  Hibernate簡介	   19.1.1  Hibernate Hello World應(yīng)用	   19.1.2  理解Hibernate架構(gòu)	   19.1.3  Hibernate的核心接口	   19.1.4  Hiebernate基本配置	   19.1.5  對象標(biāo)識符號	   19.1.6  Hibernate映射類型	   19.1.7  高級映射	   19.1.8  Hibernate檢索方式	  19.2  Struts 2整合Hibernate	   19.2.1  下載安裝Hibernate	   19.2.2  建立示例數(shù)據(jù)庫表	   19.2.3  hibernate.cfg.xml配置文件	   19.2.4  Hibernate相關(guān)代碼	   19.2.5  DAO代碼	   19.2.6  Action代碼	   19.2.7  相關(guān)視圖	   19.2.8  運行示例	  19.3  本章小結(jié)	第四篇  Struts 2實例驗證 第20章  一個示例論壇應(yīng)用	  20.1  項目需求與系統(tǒng)架構(gòu)	   20.1.1  項目需求	   20.1.2  系統(tǒng)架構(gòu)	  20.2  數(shù)據(jù)庫設(shè)計	   20.2.1  數(shù)據(jù)模型	   20.2.2  建立數(shù)據(jù)庫表	  20.3  建立開發(fā)環(huán)境	   20.3.1  配置Tomcat數(shù)據(jù)源	   20.3.2  web.xml配置文件	   20.3.3  applicationContext.xml配置文件	   20.3.4  其他配置文件	  20.4  建立數(shù)據(jù)庫連接組件	  20.5  建立業(yè)務(wù)實體對象	  20.6  建立數(shù)據(jù)庫訪問組件	  20.7  建立業(yè)務(wù)處理模塊	   20.7.1  權(quán)限檢查模塊	   20.7.2  發(fā)表文章模塊	   20.7.3  文章列表導(dǎo)航模塊	   20.7.4  顯示文章內(nèi)容模塊	   20.7.5  用戶登錄模塊	   20.7.6  用戶注冊模塊	  20.8  建立業(yè)務(wù)控制器	   20.8.1  文章處理業(yè)務(wù)控制器	   20.8.2  用戶注冊業(yè)務(wù)控制器	   20.8.3  用戶登錄業(yè)務(wù)控制器	  20.9  國際化和輸入校驗	   20.9.1  國際化	   20.9.2  輸入校驗規(guī)則文件	  20.10  建立視圖	   20.10.1  論壇列表視圖	   20.10.2  用戶登錄視圖	   20.10.3  用戶注冊視圖	   20.10.4  發(fā)表文章視圖	   20.10.5  顯示文章視圖	  20.11  Struts 2配置文件	  20.12  運行示例論壇	  20.13  本章小結(jié)

章節(jié)摘錄

  第1章 Struts 2概述Struts 1與Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優(yōu)點,使開發(fā)者能更深入地了解其內(nèi)部實現(xiàn)機制。除此之外,Struts 1的優(yōu)點主要集中體現(xiàn)在兩個方面:  Taglib標(biāo)簽庫:Taglib是Struts 1的標(biāo)簽庫,靈活使用,能大大提高開發(fā)效率。目前國內(nèi)的JSP開發(fā)者,除了使用JSP自帶的常用標(biāo)簽外,很少開發(fā)自己的標(biāo)簽,自從Struts 1廣泛應(yīng)用以來,很多公司或者開發(fā)團隊越來越重視自己標(biāo)簽庫的開發(fā),這是一個很好的起點?! №撁鎸?dǎo)航:頁面導(dǎo)航將是今后的一個發(fā)展方向,事實上,這樣使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯?! 〉?,任何優(yōu)秀的框架也不可能是十全十美的,存在著或多或少的問題,例如在一個復(fù)雜的大型應(yīng)用中,Struts 1很容易引起類爆炸。同時,在測試方面,編寫測試用例類十分不方便,給測試工作帶來了許多困難。盡管現(xiàn)在有一個測試框架Struts Test提供Struts 1的測試編寫,但是這樣測試方式加劇了復(fù)雜化?! √崾尽 pache官方網(wǎng)站是這樣介紹Struts 2的:Apache Struts 2 was originally known as WebWork2.After working independently for several years,the WebWork and Struts communities joinedforces to create Struts 2。翻譯過來大致意思是:Apache Struts 2就是之前大家所熟知的WebWork 2,在經(jīng)歷了幾年的各自發(fā)展后,WebWork和Struts社區(qū)決定合二為一,也即是Struts 2。WebWork項目已經(jīng)被Apache所收購,不會再進行升級?! truts 2中去掉了Struts 1中的ActionForm,實現(xiàn)了同Servlet API的松散耦合。Struts 2并不是一個全新的架構(gòu),而是繼承了Struts 1和WebWork的優(yōu)點,在穩(wěn)定性、易用性方面都有了很大的提高。Apache Struts 2 GA版本已經(jīng)發(fā)布,這是Apache Struts 2發(fā)行的首個穩(wěn)定版本,GA意味著General Availability,也就是官方開始推薦廣泛使用了。Struts2 GA版本的發(fā)布,意味著核心開發(fā)力量將全部轉(zhuǎn)移到Struts 2,對Struts 1的支持將會淡化。Struts 2的發(fā)展前景非常看好,有望在不遠(yuǎn)的將來完全代替Struts 1?! ?.1 MVC介紹  隨著Web技術(shù)的發(fā)展,傳統(tǒng)的C/S(客戶端/服務(wù)器)開發(fā)模式正向B/S(瀏覽器/服務(wù)器)模式轉(zhuǎn)換,更多的應(yīng)用系統(tǒng)采用了B/S結(jié)構(gòu)?! VC設(shè)計思想是Model-View-Controller的簡稱,即模型-視圖-控制器,在Web應(yīng)用系統(tǒng)的設(shè)計開發(fā)中被廣泛采用。介紹MVC設(shè)計思想,先從Web技術(shù)發(fā)展說起?! ?.1.1 Web技術(shù)發(fā)展  Web的前身是1980年Tim Berners—Lee負(fù)責(zé)的Enquire(Enquire Within Upon Everything的簡稱)項目。1990年11月,第一個Web服務(wù)器nxoc01.CelTl.ch開始運行。1991年,CERN(European Particle Physics Laboratory)正式發(fā)布了Web技術(shù)標(biāo)準(zhǔn)。  Web是一種典型的分布式應(yīng)用架構(gòu)。Web應(yīng)用中的每一次信息交換都要涉及客戶端和服務(wù)端兩個層面。因此,Web開發(fā)技術(shù)大體上也可以被分為客戶端技術(shù)和服務(wù)器端技術(shù)兩大類。  Web客戶端的主要任務(wù)是展現(xiàn)信息內(nèi)容,而HTML語言則是信息展現(xiàn)的最有效載體之一。最初的HTML語言只能在瀏覽器中展現(xiàn)靜態(tài)的文本或圖像信息,這滿足不了人們對信息豐富性和多樣性的強烈需求,由靜態(tài)技術(shù)向動態(tài)技術(shù)的轉(zhuǎn)變成為了Web客戶端技術(shù)發(fā)展方向?! 〕司帉慔TML頁面之外,客戶端應(yīng)用的開發(fā)者還可以利用一些成熟的技術(shù)將瀏覽器的功能添加到自己的應(yīng)用程序中。從1992年開始,W3C向開發(fā)者提供libwww開發(fā)庫。借助libwww,可以自己編寫Web瀏覽器和Web搜索工具,也可以分析、編輯或顯示HTML頁面。1999年,Microsoft在IE 5.0中引入的HTAs(HTML Applications)技術(shù)則允許開發(fā)者直接將HTML頁面轉(zhuǎn)換為一個真正的應(yīng)用程序。從1997年的IE 4.0開始,Microsoft為開發(fā)者提供了WebBrowser控件和其他相關(guān)的COM接口,允許程序員在自己的程序中直接嵌入瀏覽器窗口,或調(diào)用各種瀏覽器的功能,如分析或編輯HTML頁面等?! ∨c客戶端技術(shù)從靜態(tài)向動態(tài)的演進過程類似,Web服務(wù)器端的開發(fā)技術(shù)也是由靜態(tài)向動態(tài)逐漸發(fā)展、完善起來的。第一種真正使服務(wù)器能根據(jù)運行時的具體情況,動態(tài)生成HTML頁面的技術(shù)是CGI(Common Gateway Interface)技術(shù)。1995年,NCSA(National Centerfor Supercomputing Applications)開始制定GGI 1.1標(biāo)準(zhǔn)。GGI技術(shù)允許服務(wù)器端的應(yīng)用程序根據(jù)客戶端的請求,動態(tài)生成HTML頁面,這使客戶端和服務(wù)器端的動態(tài)信息交換成為了可能?! ‰S著GGI技術(shù)的普及,聊天室、論壇、電子商務(wù)、信息查詢、全文檢索等各式各樣的Web應(yīng)用蓬勃興起。早期的CGI程序大多是編譯后的可執(zhí)行程序,其編程語言可以是C、C++、Pascal等任何通用的程序設(shè)計語言。為了簡化GGI程序的修改、編譯和發(fā)布過程,人們開始探尋用腳本語言實現(xiàn)GGI應(yīng)用的可行方式。Perl結(jié)合了C語言的高效以及sh、awk等腳本語言的便捷,適用于GGI程序的編寫?! ?994年,出現(xiàn)了PHP(Personal Home Page Tools)語言。與以往的GGI程序不同,PHP語言將HTML代碼和PHP指令合成為完整的服務(wù)器端動態(tài)頁面,Web應(yīng)用的開發(fā)者可以用一種更加簡便、快捷的方式實現(xiàn)動態(tài)Web功能。1996年,Microsoft發(fā)布了ASP技術(shù)。ASP使用的腳本語言是熟悉的VBScript和JavaScript。ASP迅速成為了Windows系統(tǒng)下Web服務(wù)器端的主流開發(fā)技術(shù)。1997年,Servlet技術(shù)問世,1998年,JSP技術(shù)誕生,Servlet和JSP被后來的J2EE平臺吸納為核心技術(shù)?! SP技術(shù)和JSP技術(shù)面世之后,導(dǎo)致了微軟和以Sun公司為首的Java體系的競爭。JSP與微軟的ASP十分相似,但事實上,兩者是有著本質(zhì)的不同的,主要從以下幾個方面對其進行比較:  Web服務(wù)器的支持:大多數(shù)通用的Web服務(wù)器,如Apache、Netscape和Microsoft IIS都支持JSP頁面。只有微軟本身的Microsoft IIS和Personal Web Server可以支持ASP。平臺的支持:JSP具有平臺獨立性,只要是一般的Java程序可以運行的平臺,都支持JSP程序。Windows平臺可以很好地支持ASP,但ASP對于基于Win32組件模型的依賴,使得它難于移植到其他平臺上。  組件模型:JSP是建立在可重用的、跨平臺的組件(如JavaBeans、Enterprises JavaBeans和用戶定制的標(biāo)簽庫等組件)之上的。而ASP使用的是基于Win32的COM組件模型。腳本語言:JSP可以使用Java編程語言或JavaScript作為腳本語言。而ASP使用VBScript或JScript作為腳本語言。  安全性:JSP使用Java安全模型,而ASP使用Windows NT的安全結(jié)構(gòu)。與數(shù)據(jù)庫的連接:JSP使用JDBC建立與數(shù)據(jù)庫的連接,而ASP對數(shù)據(jù)庫使用ODBC。用戶定制的標(biāo)簽:JSP可以使用用戶定制標(biāo)簽庫進行擴充,而ASP中沒有用戶定制標(biāo)簽庫,ASP是不能擴充的?! eb服務(wù)器端開發(fā)技術(shù)的完善使開發(fā)復(fù)雜的Web應(yīng)用成為了可能。為了適應(yīng)企業(yè)級應(yīng)用開發(fā)的各種復(fù)雜需求,兩個最重要的企業(yè)級開發(fā)平臺——J2EE和.NET在2000年前后分別誕生,導(dǎo)致了開發(fā)平臺之爭。正是這種針鋒相對的競爭關(guān)系促使了Web開發(fā)技術(shù)以前所未有的速度提高和躍進?! 2EE是純粹基于Java的解決方案。1998年,Sun發(fā)布了EJB 1.0標(biāo)準(zhǔn)。EJB為企業(yè)級應(yīng)用中必不可少的數(shù)據(jù)封裝、事務(wù)處理、交易控制等功能提供了良好的技術(shù)基礎(chǔ)。至此,J2EE平臺的三大核心技術(shù)Servlet、JSP和EJB都已先后問世。1999年,Sun正式發(fā)布了J2EE的第一個版本。  緊接著,遵循J2EE標(biāo)準(zhǔn),為企業(yè)級應(yīng)用提供支撐平臺的各類應(yīng)用服務(wù)軟件爭先恐后地涌現(xiàn)了出來。IBM的WebSphere、BEA的WebLogic都是這一領(lǐng)域里最為成功的商業(yè)軟件平臺。隨著開源運動的興起,JBoss等開源世界里的應(yīng)用服務(wù)新秀也吸引了許多用戶的注意力。到2003年時,Sun的J2EE版本已經(jīng)升級到了l.4版,其中三個關(guān)鍵組件的版本也演進到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE體系及相關(guān)的軟件產(chǎn)品已經(jīng)成為了Web服務(wù)器端開發(fā)的一個強有力的支撐環(huán)境?! icrosoft的.NET平臺是一個強調(diào)多語言間交互的通用運行環(huán)境。依靠微軟強大的操作系統(tǒng)和開發(fā)工具的支持,.NET吸引了很多Web開發(fā)者的目光。C#語言和CLI這兩個技術(shù)標(biāo)準(zhǔn)構(gòu)成了.NET平臺的基石,也于2003年成為了ISO的國際標(biāo)準(zhǔn)。2002年,Microsoft正式發(fā)布.NET Framework和Visual Studio.NET開發(fā)環(huán)境?! S P.NET超越了ASP的局限,可以使用VB.NET、c#等編譯型語言,支持Web Form、.NETServerControl、ADO.NET等高級特性。客觀地講,.NET平臺,尤其是.NET平臺中的ASP.NET的確不失為Web開發(fā)技術(shù)在Windows平臺上的一個集大成者?! ?000年以后,隨著Web應(yīng)用的日益復(fù)雜,人們逐漸意識到,單純依靠某種技術(shù)多半無法達(dá)到快速開發(fā)、快速驗證和快速部署的最佳境界。研究者開始嘗試著將已有的Web開發(fā)技術(shù)綜合起來,形成完整的開發(fā)框架或應(yīng)用模型,并以此來滿足各種復(fù)雜的應(yīng)用需求?! ≡赪eb服務(wù)器端,2000年以后出現(xiàn)了幾種主要的技術(shù)融合方式。越來越多的Web開發(fā)環(huán)境開始支持MVC(Model.View—Contorller)的設(shè)計模型,為開發(fā)者提供了全套的開發(fā)框架。實際上,J2EE和.NET平臺本身就是這種開發(fā)框架的典型代表?! ?.1.2 MVC設(shè)計模式  MVC是Model一View—Controller的簡稱,即模型-視圖-控制器。MVC是Xerox PARC在20世紀(jì)80年代為編程語言Smalltalk.80發(fā)明的一種軟件設(shè)計模式,至今已被廣泛使用?! VC把應(yīng)用程序分成3個核心模塊:模型(Model)、視圖(View)和控制器(Controller),它們分別擔(dān)當(dāng)不同的任務(wù)。如圖1.2所示顯示了這幾個模塊各自的功能及它們的相互關(guān)系。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    Struts 2 技術(shù)詳解 PDF格式下載


用戶評論 (總計13條)

 
 

  •   寫的很好!對于我這樣的剛接觸JSP開發(fā)的人來說確實是一本入門的書籍
  •   不錯~內(nèi)容比較深刻~容易理解~也可以做參考書~忘記的東西~還可以翻翻~!
  •   不錯誤的書
  •   從WebWork角度分析struts2是一本不錯的好書.
  •   講的比較基礎(chǔ),適合有點基礎(chǔ)的初學(xué)者
  •   還不錯,比較適合于初學(xué)者閱讀
  •   感覺總體還是不錯的,不過后面一些章節(jié)感覺有點狗尾續(xù)貂之嫌,只是簡單介紹了一下,個人認(rèn)為可以不做介紹或者直接詳細(xì)介紹
  •   入門,值得一看的一本書
  •   里面的內(nèi)容寫的還不錯,但就是正文背景顏色太暗了,會影響閱讀的。
  •   一般,部分案例明顯看出代碼質(zhì)量偏低
  •   里面沒有使用MyEclipse,我比較喜歡。
  •   標(biāo)簽部分的例子很多是直接在jsp頁面聲明一個變量,然后顯示該變量的值。實際中用的更多是從action中得到值,沒有這種動態(tài)示例效果很差。比如演示doubleselect這一兩個select聯(lián)動時,在頁面中直接聲明一個list。展示的第一個select和第二個select之間聯(lián)動關(guān)系沒有代表性,不夠全面。書中例子為:<s:doubleselectlabel="選擇示例"headerValue="---PleaseSelect---"headerKey="1"list="{'顏色','水果'}"doubleName="dishes"doubleList="top=='顏色'?{'黑色','綠色','白色','黃色','紅色','橙色'}:{'蘋果','香蕉','西紅柿','梨'}"/>這本書最后一章-第20章是一個bbs論壇的例子。前邊已經(jīng)講過整合spring和hibernate開發(fā),再看看代碼,就算不要求和hibernate結(jié)合,連和spring結(jié)合都沒有,前邊還講的什么整合這,整合那,一個都不用。我貼的是源代碼,絕無任何加工。這個類UserBpo在bbs.bpo中,看看如何使用的Dao//添加一個用戶publicbooleanaddUser(UserBEOub){UserDAOdao=newUserDAO();try{re***ndao.addUser(ub);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();re***nfalse;}}//用戶登錄檢查,如果為合法用戶,則將用戶信息保存在ub中publicbooleancheck(UserBEOub){UserDAOdao=newUserDAO();try{setUb(dao.checkUser(ub));}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}if(getUb().getId()<1){re***nfalse;}else 
  •   紙張不錯,可惜內(nèi)容過于空泛,哎,真實浪費錢財,沒辦法,重買一本其他的。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7