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

Struts用戶和開發指南(前言之二)

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

   屬性(Properties)文件和資源綁定(Resourse Bundles)
  很多Java應用程序(包括Web應用程序在內)經常通過 屬性文件進行一些配置屬性文件是Struts框架用於給應用程序提供消息資源資源綁定的基礎所在
  
  關於屬性文件更多請參考
  
  The Java Tutorial中的Using Properties to Manage Program Attributes
  
  Java資源綁定是根據用戶 區域(Locale)通過一個或多個屬性文件為用戶提供國際化支持Struts從一建立開始就對應用程序的本地化有很好的支持
  
  關於本地化和資源綁定的更多請參考
  
  The Java Tutorial 中的About the ResourceBundle Class
  
   Java Servlet
  由於Java是一種面向對象的編程語言所以Java Servlet平台就把HTTP強制造型(或構造)為面向對象的形式這一策略使得Java開發人員省下更多的時間去處理自己的應用程序的功能上而不是放在HTTP的機制處理上
  
  HTTP提供了一套擴展服務器的基本機制即公共網關接口(Common Gateway InterfaceCGI)服務器可以傳遞一個請求給CGI程序然後CGI程序返回一個響應同樣一個Java服務器傳遞一個請求給一個Servlet容器容器可以對請求作一些處理也可以把這個請求直接返還給HTTP服務器容器檢查它的Servlet列表來決定是否要對這個請求進行處理如果請求注冊了一個Servlert那麼容器就把這請求轉交給這個Servlet
  
  當一個請求進入時容器檢查該請求是否注冊了Servlet如果找到一個匹配的Servlet容器就把這個請求傳給這個Servlet如果沒有請求就被返還給HTTP服務器
  
  容器的職責就是管理Servlet的生命周期創建Servlet調用Servlet最後釋放Servlet
  
  一般情況下一個Servlet是[javaxservlethttpHttpServlet]的一個子類一個Servlet必須實現容器需要調用的四個方法
  
  public void init(ServletConfig config)當Servlet實例第一次被創建時和執行所有請求之前Servlet容器調用這個方法
  public void doGet(HttpServletRequest requestHttpServletResponse response)此方法用於處理一個使用HTTP GET 協議的請求並生成一個相應的動態響應
  public void doPost(HttpServletRequest request HttpServletResponse response)此方法用於處理一個使用HTTP POST協議的請求並生成一個相應的動態響應
  public void destroy() 當Servlet實例中止服務時容器調用這個方法諸如當Web應用程序正在被undeploy或當整個容器被shut down時
  
  Struts框架已為我們的應用程序提供一個現成Servlet[orgapachestrutsactionActionServlet]作為一個Struts應用程序開發人員在使用Struts框架的ActionServlet實例的同時了解Servlet的基礎知識和明白它在Web應用程序所扮演的角色也是相當重要
  
  關於Servlet的更多知識請參考
  
  中的The Java Servlet Technology
  中的The Servlet and Specifications
  The Java Web Service Tutorial的Java Servlet Technology
  The Java Web Service Tutorial的Web Applications
  
   Servlet和Thread
  
  為了提高性能容器支持多線程Servlet一個具體的Servlet只能創建一個實例通過同一個對象為注冊了這個Servlet的每個請求服務這一個策略可以使容器充分利用系統資源與此同時也就必須考慮Servlet的doGet和doPost方法編碼的線程安全問題
  
  關於Servlet與線程安全的更多資料請參考
  
  The Java Web Service Tutorial中的Controlling Concurrent Access to Shared Resources#
  
   Servlet上下文(Context)
  
  ServletContext接口[javaxservletServletContext]提供正在運行的Servlet所處的Web應用程序的上下文(或環境)的視圖Servlet可以通過getServletConfig()方法訪問而JSP頁面可以通過隱含變量application變量獲得Servlet上下文提供的幾個API在創建Struts Web應用程序時是相當有用的
  
  訪問Web應用程序資源Servlet可以通過getResource()和getResourceAsStream()方法訪問Web應用程序內的靜態資源文件
  Servlet上下文屬性上下文可以用來存儲Java對象通過字符串值的key來識別對象這些屬性對整個Web應用程序都是全局的Servlet可以通過getAttribute()getAttributeNames()removeAtrribute()和setAttribute()方法進行訪問對JSP頁面來說Servlet上下文屬性相當於應用程序作用域Bean
  
  關於Servlet上下文的更多信息請參考
  
  The Java Web Services Tutorial中的Accessing the Web Context #
  
   Servlet請求
  
  每個Servlet處理的請求用一個Java接口代表一般是HttpServletRequest接口 [javaxservlethttpHttpServletRequest]這個請求接口提供了一套訪問包含在底層HTTP請求內的所有信息的面向對象機制包含
  
  Cookie通過getCookie()方法獲得包含在請求中的有效Cookie集
  可以通過名稱訪問包含在請求中的HTTP頭你可以枚舉包含的所有的HTTP頭的名稱
  參數請求參數可以通過名稱訪問包含在URL的查詢字符串中(doGet)或包含在請求內容中(doPost)的請求參數
  請求特征輸入HTTP請求的一些其他特征諸如GET或POST方法使用的協議規格(httphttps等等
  請求URI信息通過getRequestURI()方法可以獲得原始的請求URL另外Servlet容器把請求URL解析為一些可以單獨訪問的組成部分(contextPath servletPath和 pathInfo)
  用戶信息如果你使用了用戶管理的安全那麼你就可以查找一個已認證用戶名獲得一個代表當前用戶的Principal對象還有當前用戶是否被授權為一個特定角色
  
  另外Servlet請求還支持請求屬性(在JSP中就是請求作用域Bean)類似於前面講到的Servlet上下文屬性請求屬性常用於業務邏輯層和視圖層之間狀態信息通信業務邏輯層產生這些狀態信息視圖層使用這些信息產生相應的響應
  
  Servlet容器會確保一個具體的請求被一個單獨線程的Servlet處理所以你就不必擔心在訪問Servlet請求的屬性時有關線程安全的問題
  
  關於Servlet請求的更多請參考
  
  The Java Web Tutorial中的Getting Information from Requests#
  
   Servlet響應
  
  一個Servlet的主要目的就是處理一個輸入的Servlet請求[javaxservlethttpHttpServletRequest]並生成對應的響應生成響應的過程是通過調用Servlet響應接口[javaxservlethttpHttpServletResponse]相應的方法來完成的可用的方法如下
  
  設置HTTP頭你可以設置包含在響應中的HTTP頭信息最重要的HTTP頭信息就是ContentType它告訴你的客戶端包含在響應體中信息是哪種類型的一般情況下設為text/html類型就是HTML頁面或設為text/xml類型就是XML文檔
  設置Cookies你可以向當前的響應中增加Cookie
  發送錯誤響應你可以使用sendErro()發送一個HTTP錯誤狀態信息(代替一般的頁面內容)
  重定向到其他資源你可以使用sendRedirect()方法重定向客戶端到你指定的其他URL資源上去
  
  使用Servlet響應API的一個重要原則就是調用維護頭信息和Cookies所有方法都必須在緩存的全部響應內容第一次被更新給客戶端之前完成原因是因為這些信息都是作為HTTP響應最開始部分被傳輸的因此試圖在頭信息已被送出之後再添加頭信息必然是徒勞的
  
  使用Model 模式的應用程序的表現層你可能不直接使用Servlet 響應APIs來生成響應一般是使用JSP頁面來完成在Servlet容器中JSP頁面將被JSP編譯器轉換為Servlet由這個JSP Servlet生成響應其中可能包含一些JSP標簽生成的動態信息
  
  其他的表現系統諸如Struts工具Velocity框架可能把生成響應的任務代理給一個專門的Servlet來完成但是原理是相同的你創建一個模板然後動態的響應由模板動態生成
  
  關於Servlet響應的更多請參考
  
  The Java Web Tutorial中的Constructing Responses#
  
   過濾器(Filtering)
  
  如果你使用版或更新規范的Servlet容器(如Tomcatx)你可以使用新的過濾器APIs[javaxservletFilter]組合一些組件來處理請求和生成響應過濾器其實是一個過濾器鏈的集合每個過濾器都可以處理請求和生成響應然後把處理權交給下一個過濾器最後調用Servlet
  
  Struts x系列(版本等)僅支持版本或更早的Servlet規范的Servlet容器所以Struts自身並沒有使用過濾器下一代的Struts(x系列)是基於Servlet或更新規范的Struts x版可能會使用到過濾器
  
  關於過濾器更多請參考
  
  Filtering Requests and Responses#
  
   會話(Session
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28078.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.