熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

完全技術手冊——Struts使用手冊一

2013-11-23 20:09:23  來源: Java開源技術 

  
  
  猜想
  
   HTTPHTMLUser Agents
  
   HTTP 請求/響應周期
  
   Java語言和應用框架
  
   JavaBeans
  
  屬性文件和資源綁定
  
   JavaServlet
  
  介紹
  
  Struts的歷史
  
   MVC模式
  
   Struts控制流程
  
   創建模型組件
  
  概述
  
   JavaBean和作用域
  
   ActionForm Bean
  
  系統狀態Bean
  
  商業邏輯Bean
  
   創建視圖組件
  
   概述
  
   國際化信息
  
  Forms 和 FormBeans的交互
  
   其他表示層技術
  
   創建控制(Controller)組件
  
   概述
  
   ActionServlet
  
   ActionForm類
  
   Action類
  
   異常處理器
  
   插件類
  
   ActionMapping的實現
  
   編寫Action Mappings
  
   在頁面中使用ActionMapping
  
   在ActionMapping中使用通配符
  
   公共的Log 接口
  
   配置應用
  
   概述
  
   Struts配置文件
  
   為應用配置模塊
  
   WEB應用部署描述符
  
  
  
  猜想
  
  本手冊適合於有創建Java Web 應用經驗的Web 開發人員在開始學習Struts之前你應該了解如下的技術:
  
   HTTPHTMLUser Agents
  
   HTTP 請求/響應生命周期
  
   Java語言和應用框架
  
   JavaBeans
  
   屬性文件和資源綁定
  
   Java Servlets
  
   Java Server Pages JSP Tag Librariy
  
   XML
  
   HTTPHTMLUser Agents
  
  WWW是基於超文本傳輸協議和超文本標識語言建立的
  
  用戶代理比如浏覽器他們使用HTTP去請求一個文檔然後格式化顯示
  
   HTTP 請求/響應周期
  
  對於Web開發者來說理解HTTP的請求和響應周期是很重要的你要使用HTTP發送一個請求然後服務器給你一個響應當你創建WEB應用時你需要返回一個響應對象來回應請求
  
   Java語言和應用框架
  
  Struts是用JAVA編寫的JAVA是面向對象的語言而Struts充分利用了面向對象的技術除此而外JAVA支持線程如果你很好的掌握了JAVA特別是面向對象編程和線程這將會有益於最有效的使用Struts和這個手冊
  
   JavaBeans
  
  象大多數JAVA應用一樣大多數Struts對象都是JavaBean遵循JavaBean設計模式使得Struts更容易被開發者和JAVA開發工具使用盡管JavaBean的最初是用來開發可視元素的但它對開發可重用組件也非常有益
  
  反射和內省
  
  反射是決定什麼樣的函數或域存在某對象中的方法內省是反射的特殊形式
  
  使用內省就可以知道哪些方法將會被其他對象使用(如gettersetter)
  
  Struts框架使用內省來轉換HTTP參數到JAVABEAN的屬性中和把JAVABEAN中的屬性數據組裝到HTML的域
  
   MAP
  
  JAVABEAN把數據存在屬性中JAVABEAN雖然是靈活而功能強的對象但它並不是編程者存儲數據的唯一對象另一個熟為人知的對象是javautilMapMap它是一個名字/值對的數據集合它經常用來存儲動態數據
  
   DynaBeans
  
  DynaBeans集成了JAVABEAN 的擴展性和MAP的靈活性編寫JAVABEAN要創建一個新類並且要為每個屬性編寫方法DynaBeans則將屬性放在XML中配置
  
  在Struts應用中你可以使用DynaBeans來描述你的HTML Form這個策略可以避免編寫普通的JAVABEAN來存儲很簡單的屬性
  
  屬性文件和資源綁定
  
  JAVA應用包括WEB應用的配置經常使用屬性文件來完成 Struts的消息資源都是通過資源綁定和屬性文件實現的
  
  JAVA資源綁定使用一個或多個屬性文件來實現應用的國際化
  
   JavaServlet
  
  由於JAVA是面向對象的語言因此JAVA平台已經將HTTP轉換成對象的形式這將會使JAVA 程序員關注於應用本身而不是HTTP
  
  HTTP提供了一個標准的機制來擴展服務器的功能我們稱之為CGI 服務器將請求發送到CGI程序CGI程序則返回一個響應同樣的任何JAVA服務器則會接收請求然後轉發到Servlet
  
  Servelt 是javaxservlethttpHttpServlet的子類每個Servlet必須完成四個方法
  
  * public void init(ServletConfig config)
  
  * public void doGet(HttpServletRequest request HttpServletResponse response)
  
  * public void doPost(HttpServletRequest request HttpServletResponse response)
  
  * public void destroy()
  
  Struts提供了一個可用的ServletorgapachestrutsactionActionServlet
  
  作為一個Struts開發者你只需要編寫對象供ActionServlet調用就行了但是理解Servlet並熟悉他在JAVA WEB應用中扮演的角色那是最好不過了
  
   Servlets 和多線程
  
  為了提高性能Servlet設計程多線程每個Servlet僅創建一個實例每一個請求都傳遞到同一個對象這將有利於Servlet容器充分的利用資源因此doGetdoPos在編程時必須保證他是線程安全的
  
   Servlet Context
  
  ServletContext(javaxservletServletContext)定義了Web 應用中Servlet的視圖在Servlet中通過getServletConfig()可以訪問得到在JSP中則通過隱式對象application得到ServletContext提供了幾個對於創建Struts應用來說非常有用的幾個方法:
  
  訪問WEB應用資源   Servlet通過getResource()getResourceAsStream()可以訪問WEB應用中的靜態資源文件
  
  Servlet Context屬性  Servlet上下文可以存儲JAVA對象到屬性中這些屬性對整個WEB應用都可見
  
   Servlet請求
  
  Servlet請求就是javaxservlethttpHttpServletRequest通過它可以訪問HTTP請求的所有信息:
  
   Cookies 通過getCookies()可以得到當前請求的所有cookie
  
   HTTP頭  HTTP請求的頭可以通過對應的名字來訪問你當然可以通過枚舉來列出所有的頭
  
   參數   你可以通過參數來訪問HTTP請求的URL的參數或表單中的內容
  
   請求特性  HTTP請求表單的提交方式(GET/POST)用的是什麼協議(HTTP/HTTPS)
  
   請求URI信息 通過getRequestURI()可以得到最初的請求URI除此之外我們還可以得到contextPathservletPathpathInfo
  
   用戶信息  如果你正使用容器來進行安全管理你可以得到一個Principal對象來代表當前用戶並確認該用戶是否擁有某叫角色的權限
  
  Servlet請求擁有請求級別的屬性與前面提到的應用級別屬性類似請求級別的屬性經常用來傳遞狀態信息到可視化組件(如JSP)
  
  Servlet容器保證被Servlet處理的請求處於單線程內因此你不必擔心在訪問request對象的屬性時會有多線程的問題
  
   Servlet響應
  
  Servlet的功能就是接收請求然後生成相應的響應 這是通過調用javaxservlethttpHttpServletResponse的方法實現的
  
  設置頭  你可以設置包含在響應中的頭最重要的頭就是ContentType它用來告訴客戶端內容的格式比如:text/html代表htmltext/xml代表XML
  
  設置Cookies 你可以加入cookie到當前的響應中
  
  發送錯誤響應  你可以使用sendError()發送一個HTTP錯誤編號
  
  重定向到其他資源 你可以使用sendRedirect()定向到另外一個URL
  
  使用Response API的一個最重要的原則就是:操作HeaderCookie的任何方法必須在第一次輸出緩沖區滿且發送到客戶端前調用
  
  過濾
  
  如果你的Servlet容器是基於Servlet規范或更高那麼你就可以使用javaxservletFilter來對請求和響應作些處理許多filter聚合在一起每一個filter都有機會來對請求和響應做處理
  
  Struts只需要Servlet規范因此這些版本的Struts並不支持filter
  
  Struts從開始就需要Servlet規范的容器了
  
   Session
  
  HTTP的一個關鍵特性就是無狀態因此我們不知道某個請求是否是來自同一用戶的請求這將會使跨請求的會話變得很艱難
  
  為了解決這個問題Servelet實現了一個javaxservlet容器將采用Cookie或URL Rewriting來保證接鄰近的請求包含session id來標識該請求是同一個session因此保存在session中的屬性可以被多個請求共享
  
  為了不浪費資源Session有一個可配置的超時時間設置如果兩個請求間的時間差超過了超時時間間隔那麼session中的數據會失效你可以定義一個默認的超時時
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28032.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.