posts - 7, comments - 2, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2007年8月15日


           什么是 Java 技術?  
          Java 技術(版本 2)是一種面向對象的編程語言,是 Sun Microsystems 所開發的編程平臺。Java 技術基于單一 Java 虛擬機(JVM)的概念,JVM 是編程語言與機器底層軟件和硬件之間的翻譯器。編程語言的所有實現都必須模擬 JVM,從而使 Java 程序可以在具有 JVM 版本的任何系統上運行。

          Java 編程語言是與眾不同的,因為 Java 程序需要經過編譯(翻譯為叫做 Java 字節碼的中間語言)和解釋(通過 JVM 分析和運行字節碼)。編譯只進行一次,而解釋則在每次運行程序時都要進行。編譯的字節碼是 JVM 的最佳機器碼形式;解釋程序是 JVM 的實現。

          Java 平臺具有三個版本(請參閱下面的 Java 平臺的多個版本),該平臺由 JVM 和 Java Application Programming Interface (API) 組成,Java API 是現成軟件組件的集合,便于進行 applet 和應用程序的開發和部署,其中包括健壯的、安全的和可互操作的企業應用程序。Java API 被分組到相關類和接口的庫中;這些庫稱為包。

          了解更多信息:

          要了解 Sun 的 Java 編程語言的未來發展方向,請閱讀 2003 JavaOne Developer Conference 的 technical keynote digest。 
          Java 平臺的多個版本
          因為 Java 技術的迅速普及,開發人員強烈要求某些東西更簡單些。Sun Microsystems 通過創建三個 Java 平臺版本來滿足此需要 ― Standard Edition、Enterprise Edition 和 Micro Edition。

          了解更多信息:

          J2SE (Java 2 Standard Edition)。包括標準的 Java 2 SDK、工具、運行時環境和 API,用于那些采用 Java 程序設計語言編寫、部署和運行 applet 和應用程序的開發人員。 Merlin 的魔力 專欄極好地介紹了最新版本的 J2SE 1.4。


          J2EE (Java 2 Enterprise Edition)。通過基于標準化模塊組件,通過為這些組件提供一整套服務,以及通過自動處理應用程序行為的許多細節,而無需進行復雜編程,企業版簡化了多層企業應用程序的構造和部署。J2EE 探索者 專欄將增加您對此版本的了解。


          J2ME (Java 2 Micro Edition)。該版本是高度優化的 Java 運行時環境,針對特定的消費者領域,從智能型手機或尋呼機到機頂盒等一系列小型設備(外形小或者存儲能力受限)。在“ J2ME 101,第 1 部分:介紹 MIDP 的高層 UI”教程中可以了解更多關于 J2ME 的信息。(您還可以在 developerWorks 無線 專題找到許多 J2ME 參考資料。) 
           
           
           到頁首  
           
           
            Java 技術為什么重要?  
          總體來說,Java 語言的主要優點在于跨平臺和操作系統的可移植性,以及它可以通過帶寬相對較窄的通道提供(比如撥號連接)。Java 語言還具有可伸縮性;現有應用程序可以很容易地適應那些受內存資源限制的設備。另外,由于 Java 語言設計用于通過網絡以安全的方式運行,所以當通過 Internet 操作時,它也提供了此級別的安全性。本質上,Java 技術將用戶計算能力從桌面擴展到了 Web 資源。
           
           
           到頁首  
           
           
            什么是 Java 組件技術?  
          管理 Java 技術縮略詞的字母湯(alphabet soup)可能是一項巨大的任務,就正如通過 Java Community Process 管理 Java 語言的發展一樣。下面是 Java 語言各版本的組件、可選包和擴展包的部分列表(也就是組成這個平臺的復雜部件),并給出了簡短描述和參考資料鏈接,用以說明它在 Java 開發領域中的作用。注意下面許多參考資料都可以在各版本中使用。

          J2SE 中的技術:

          Java Access Bridge 用于 Microsoft Windows,它起到了網橋的作用,允許基于 Windows 的輔助技術與 Java Accessibility API 進行交互(請參閱“為可訪問性編碼”。)


          JavaBeans Component Architecture 是平臺獨立的規范,它為 Java 平臺定義了一套標準組件軟件 API。(請參閱“Reflecting, introspecting, and customizing JavaBeans”。)


          Javadoc 是一種工具,用于從源代碼的 doc 注釋中生成 HTML 格式的 API 文檔。(請參閱“Java 理論和實踐:我必須對那些內容進行文檔編制嗎?”。)


          Java Foundation Classes (Swing) (JFC) 是 Java 類庫的集合,它支持為基于 Java 的客戶機應用程序構建 GUI 和圖形功能。(請參閱“Java 2 用戶界面”。)


          Java Platform Debugger Architecture (JPDA) 是 Java 2 的調試支持基礎設施。JPDA 包括三層 API: 
          JDI (Java Debug Interface)是一種支持遠程調試的高級別編程語言接口。 
          JDWP (Java Debug Wire Protocol) 定義在調試過程和調試器前端之間傳輸的信息和請求的格式。 
          JVMDI (Java Virtual Machine Debug Interface) 是低級別本地接口,定義了調試時 JVM 必須提供的服務。 
          (請參閱“ 軟件開發的未來 ”。)

          Java 2D API 是用于高級 2D 圖形和成像(為圖像合成和 alpha 通道圖像提供廣泛支持)的類集合,是提供正確的色彩空間定義和轉換的類集合,是面向顯示的成像操作符的集合。(請參閱教程“Java 2D簡介”。)


          Java Web Start 使您可以通過單擊而無需經歷安裝過程來下載和啟動功能完善的應用程序(如電子表格),從而簡化 Java 應用程序的部署。(請參閱“Java Web Start”。)


          Java Database Connectivity (JDBC) 是一種 API,使您可以從 Java 內訪問大多數表格式數據源,它提供了大多數 SQL 數據庫的跨 DBMS 連通性,以及對其他表格式數據源的訪問(如電子表格或平面文件)。(請參閱“JDBC 3.0 有什么新特性”。)


          Remote Method Invocation (RMI) 提供引導命名服務,不會改變類型,并使用對象序列化使編程人員能夠創建基于 Java 技術的分布式應用程序,在該應用程序中,可以從不同主機上的其他 Java 虛擬機上調用遠程 Java 對象的方法。(請參閱教程“分布式對象 101-使用RMI和CORBA ”。)


          Java Advanced Imaging (JAI) 是一種 API,提供了面向對象的接口的集合,這些接口支持簡單的高級編程模型,使得開發人員可以很容易地操縱圖像。(請參閱“利用 JSP 代碼管理您的圖像”。)


          Java Authentication and Authorization Service (JAAS) 是一個包,它啟用服務,通過實現標準 Pluggable Authentication Module (PAM) 框架的 Java 版本,通過支持基于用戶的授權,對用戶進行驗證和執行訪問控制。(請參閱教程“Java 安全性 第二部分 認證與授權”;“擴展 JAAS 實現類實例級授權”也是很好的信息來源。)


          Java Cryptography Extension (JCE) 是一個包集合,提供了加密、密鑰生成和協議以及 Message Authentication Code (MAC) 算法的框架和實現。它提供了對稱、非對稱、分組和流密碼的加密支持,并支持安全流和密封對象。(請參閱教程“Java 安全性第一部分 密碼學基礎”。)


          Java Data Objects (JDO) 是持久性的基于標準接口的 Java 模型抽象,它允許編程人員直接將 Java 域模型實例存儲到持久存儲(數據庫)中,可能替代直接文件輸入輸出、序列化、JDBC 和 EJB Bean Managed Persistence (BMP) 或 Container Managed Persistence (CMP) Entity Bean 等方法。(請參閱教程“Java 數據對象上機實踐”。)


          Java Management Extensions (JMX) 提供的工具用于構建分布式、基于 Web 的、模塊化和動態應用程序,以便管理和監視設備、應用程序和服務驅動的網絡。(請參閱由三部分組成的“從黑箱到企業,第 1 部分:管理,JMX 1.1 樣式”。)


          Java Media Framework (JMF) 允許音頻、視頻和其他基于時間的媒體添加到 Java 應用程序和 applet 中。(請參閱教程“Java Media Framework 基礎”。)


          Java Naming and Directory Interface (JNDI) 是一種標準擴展包,為企業中的多個命名和目錄服務提供具有統一接口的 Java 應用程序,允許不同種類的企業命名和目錄服務的無縫連通性。(請參閱“EJB 最佳實踐:工業強度的 JNDI 優化”。)


          Java Secure Socket Extensions (JSSE) 是啟用安全 Internet 通信的包集合,實現 SSL (Secure Sockets Layer) 和 TLS (Transport Layer Security) 協議的 Java 版本,并包括數據加密、服務器驗證、消息完整性和可選客戶機驗證的功能。(請參閱教程“將 JSSE 用于安全套接字通信”。)


          Java Speech API (JSAPI) 允許 Java 應用程序將語音技術合并到用戶接口中。JSAPI 定義了跨平臺的 API,以支持命令和控制識別程序、聽寫系統和語音合成器。(請參閱“The Java 2 user interface”部分。)


          Java 3D 是一種 API,通過提供支持簡單高級編程模型的一組面向對象的接口,開發人員可以使用它容易地將可伸縮的平臺獨立的 3D 圖形合并到 Java 應用程序中。(請參閱教程“Java 3D 探奇 ”。) 
          J2EE 中的技術:

          Java API for XML Processing (JAXP) 通過使應用程序解析和轉換不依賴特定 XML 處理實現的 XML 文檔,通過使開發人員可以靈活地在 XML 處理器程序之間進行交換,而無需更改應用程序代碼,從而支持使用 DOM、SAX 和 XSLT 處理 XML 文檔。(請參閱“使用 Java 編程利用在線 XML 數據”。)


          Java API for XML Registries (JAXR) 為訪問不同種類的 XML 注冊中心提供了統一和標準的 API (用于構建、部署和發現 Web 服務的可用基礎設施)。(請參閱 Java 技術標準。)


          Java API for XML-based RPC (JAX-RPC) 使開發人員可以開發基于 SOAP 的可互操作的和可移植的 Web 服務。(請參閱 Java 技術標準。)


          SOAP with Attachments API for Java (SAAJ) 使開發人員可以生產和消費符合 SOAP 1.1 規范和 SOAP with Attachments 注解的消息。(從“使用SAAJ發送和接收SOAP消息”開始;有關 XML 技術的詳細信息,請參閱 developerWorks XML 專區。)


          Common Object Request Broker Architecture (CORBA) 是異構計算的開放標準,通過提供分布式對象框架、支持該框架的服務以及與其他語言的互操作性,該標準對 Java 進行了補充。(請參閱教程“使用RMI和CORBA ”;“企業中的 RMI-IIOP”也是很好的信息來源)。


          ECperf 是用于度量 Web 商務系統的性能和可伸縮性的基準。它包括:組成應用程序的 EJB 組件;使用 JSP 進行單一用戶/交互測試的 Web 客戶機;模式腳本和加載程序;makefile 和部署描述符;用于實現運行規則和模擬客戶機加載的驅動程序。(請參閱 Java 技術標準。)


          Enterprise JavaBeans (EJB) 是一種技術,通過提供對事務、安全性、數據庫連通性等服務的支持,它使用組件模型來簡化中間件應用程序的部署。(請參閱介紹該技術的教程“Enterprise JavaBean 基礎”;另請參閱系列文章 EJB 最佳實踐。)


          Java Authorization Contract for Containers (Java ACC) 是一種規范,它定義了容器使用的授權提供者的安裝和配置。Java ACC 定義了提供者必須使用的接口,從而允許容器部署工具創建和管理與角色相對應的權限集合。(請參閱教程“Developing accessible GUIs with Swing”。)


          JavaMail 是一種 API,它提供了模擬郵件系統的抽象類的集合。(請參閱教程“ JavaMail API 基礎”。)


          Java Message Service (JMS) 是一種用來添加提供者框架的 API。通過定義所有兼容 JMS 技術的消息系統所支持的消息概念和編程策略的公共集合,該框架為 Java 平臺啟用了可移植的、基于消息的應用程序的部署。(請參閱“實現獨立于供應商的 JMS 解決方案”。)


          JavaServer Faces 提供了一種編程模型,通過匯集頁面中可重用的 UI 組件,將這些組件連接到應用程序數據源以及將客戶機生成的事件寫入服務器端事件處理程序,該模型有助于開發人員開發 Web 應用程序。(請參閱“JSP pages, evolving and contributing to Web services”。)


          JavaServer Pages (JSP) 使 Web 開發人員可以使用單獨的用戶界面和內容生成功能,快速地進行開發和輕松地維護動態的、平臺獨立的 Web 頁面,這樣設計人員就可以更改頁面布局,而無需改變動態內容。該技術使用類似于 XML 的標簽,這些標簽封裝了用于生成頁面內容的邏輯。(請參閱教程“JSP 技術入門 ”;另請參閱系列文章 JSP 最佳實踐。)


          Java Servlets 是一種擴展和增強 Web 服務器功能的 Java 方式。要做到這一點,應該為構建基于 Web 的應用程序提供基于組件的平臺獨立的方法,而不會出現 CGI 程序的性能限制。(developerWorks 中有許多關于 servlet 的信息。“創建 Java HTTP Servlet”和“構建帶會話跟蹤的 Servlet”這兩篇入門教程應該是最好的起點。)


          J2EE Connector Architecture 定義了一種標準體系結構,通過定義一組可伸縮的、安全的事務性機制,允許 EIS 供應商提供插入到應用服務器中的標準資源適配器,該體系結構用于將 J2EE 平臺連接到異構企業信息系統(Enterprise Information Systems, EIS)。(請參閱教程“J2EE Connector Architecture 介紹”。)


          J2EE Management Specification (JMX) 定義了 J2EE 平臺的管理信息模型。該模型設計用于與許多管理系統和協議互操作,包括到 Common Information Model (CIM)、SNMP Management Information Base (MIB)的模型的標準映射,以及通過服務器駐留 EJB 組件(J2EE Management EJB Component,MEJB)到 Java 對象模型的模型的標準映射。(請參閱“從黑箱到企業,第 1 部分:管理,JMX 1.1 樣式”。)


          Java Transaction API (JTA) 是高級的獨立于實現和協議的 API,它允許應用程序和應用程序服務器訪問事務。Java Transaction Service (JTS) 指定 Transaction Manager 的實現, Transaction Manager 支持 JTA,并在低于 API 的級別上實現 OMG Object Transaction Service (OTS) 1.1 規范的 Java 映射。JTS 使用 Internet Inter-ORB Protocol (IIOP) 傳輸事務。(請參閱“理解 JTS ― 平衡安全性和性能 ”。) 
          J2ME 中的技術:

          Connected Limited Device Configuration (CLDC) 是組成資源受限移動信息設備的 Java 運行時環境的兩個配置之一。CLDC 提供了最基本的庫集合和虛擬機功能,在包含 K 虛擬機(KVM)的 J2ME 環境的每個實現中,這些都是必須存在的。(請參閱“Know no limits: Approaches to mobile device constraints”)


          Mobile Information Device Profile (MIDP) 是組成資源受限移動信息設備的 Java 運行環境的兩個配置之一。MIDP 提供核心應用程序功能,包括用戶界面、網絡連通性、本地數據存儲和應用程序生命周期管理。(請參閱教程“Implementing Push technology with J2ME and MIDP”。)


          Connected Device Configuration (CDC) 是一種基于標準的框架,用于構建和提供可在許多網絡連接消費者和嵌入式設備之間共享的應用程序。(請參閱“Securing wireless J2ME”。)


          developerWorks Wireless technology 專區包含了 J2ME 相關技術的多篇文章和教程。 
          Java 網絡技術:

          JAIN APIs 是一組基于 Java 的 API,用于快速開發下一代電信產品和服務。(請參閱 Java 技術標準。) 



          Java Metadata Interface (JMI) 是實現動態的、平臺獨立的基礎設施的規范,它允許進行元數據的創建、存儲、訪問、發現和交換。該規范基于 Object Management Group (OMG) 的 Meta Object Facility (MOF) 規范,由一組使用統一建模語言(Unified Modeling Language,UML)描述的基本建模工件組成。(請參閱 Java 技術標準。)


          JavaGroups 是一個軟件工具包(API 庫),用于使用分布式系統解決方案進行設計、實現和實驗。(請參閱“High-impact Web tier clustering, Part 1”和 Part 2。)


          Jini 是一種開放體系結構,用于為硬件和軟件創建高適應性的以網絡為中心的服務。Jini 系統體系結構由三個類別組成:編程模型、基礎設施和服務。(請參閱“Jini networking technology, the next step”。)


          JXTA 是一組開放協議,允許網絡上所有連接設備以 P2P 方式通信和協作。JXTA 對等方創建虛擬網絡,任何對等方都可以在其中與其他對等方或資源進行直接交互,甚至當一些對等方和資源位于防火墻或 NAT 后或者位于不同的網絡傳輸中也是如此。(請參閱“Making P2P interoperable: The JXTA story”。) 
           
           
           到頁首  
           
           
           Java 技術如何與 Web 服務聯系起來?  
          Web 服務是一種技術,允許用 XML 定義業務規則和過程,這樣軟件應用程序能夠以平臺獨立和編程語言無關的方式進行通信。XML 技術使數據可以移植,方便了消息創建,而 Java 技術則使代碼可以移植。事實上,XML 和 Java 語言可以很好地結合起來,成為構建和部署 Web 服務的完美組合。

          了解更多信息:

          developerWorks 的“Web services 新手入門”和“XML 新手入門”頁面將幫助您了解這些復雜的技術。 
           
           

           
           
           如何提高 Java 編程技能?  
          有兩種途徑可以提高您的技能:選學一門課程(為獲得證書或僅為了學習)或者自學(當然要通過編寫代碼來練習)。除了汲取有經驗的開發人員的知識外,獲取證書途徑還可以向未來的雇主提供確實的證據,證明您擁有構建他們要求的技術所需的技能。通過試驗自己的技能,使用可用資源,您可以在 Java 技術的不同領域提高您的技能。下列參考資料對以上兩種途徑都應該有幫助。 

          了解更多信息:

          要獲得 Java 語言的全面介紹,Java 語言基礎 教程是個很好的起點。


          如果基本教程看起來有些復雜,您可以嘗試 Robocode。Robocode 是基于 Java 技術構建的易于使用的機器人戰爭模擬程序,它在提供純粹娛樂的同時教您如何編程。要獲得 Robocode 的介紹,請閱讀“重錘痛擊 Robocode!”


          如果您是 C/C++ 編程人員,不熟悉 Java,“Java programming for C/C++ developers”教程通過比較和對照 Java 編程概念和 C/C++ 編程概念,可以幫助您快速入門 Java。


          本文是循序漸進的 幫助您準備 SCJP 考試指南,即 Sun Certified Java Programmer 證書考試。


          IBM 在 WebSphere 開發(用于企業 Java 應用程序)、DB2、XML、電子商務和 Linux 這些相關技術方面提供了 專業認證。


          如果您沒有聽說過 XP 精華 或 XP,它是一種應用程序設計理念,它合并了連續階段測試、在編碼前編寫測試、現場客戶輸入、重構(在不更改功能的情況下改進代碼)等,本文可提供用于編寫 Java 應用程序的極好工具。(揭開極端編程的神秘面紗:“XP 精華”重訪,第 2 部分 中詳細描述了如何進行實踐。)


          將設計理論轉換為實際應用程序是 Java 理論與實踐 系列文章的出發點。


          Java 編程人員知道利用集成 bug 檢測和測試進行程序設計,所以利用 Java 調試 提高您的調試技能。而且,developerWorks 提供了關于 Java 調試(重點是稱為 bug 模式的工具)的專欄集,稱為 診斷 Java 代碼。


          developerWorks 提供了大量 基于 Java 的教程,這是下一代自己編寫代碼的最佳學習體驗。


          要獲得更多學習如何使用 Java 語言的交互式方法,請參加 Java 討論區,該論壇由具有多年 Java 相關技術開發經驗的著名專家主持。 
           
           
            
           
           
            Java 編程人員可以使用哪些 IBM 工具和產品?  
          作為在 Java 技術使用方面的一流創新者,IBM 站在了最前線。瀏覽 Java technology downloads and products 頁面可以獲得工具和產品的完整列表。以下提供了一些重要部分。

          了解更多信息:

          軟件開發工具箱:構造應用程序的工具箱,用于各種 Java 相關技術的大量工具。下面只是其中的幾個: 
          IBM developer kits for Java technology,用于在一些最普通的 IBM 平臺上創建和測試 Java applet 和應用程序。 
          Agent Building and Learning Environment,用于開發混合智能軟件代理和代理應用程序。 
          Emerging Technologies Toolkit 在網格計算、異步 Web 服務、業務流程、自主計算和其他服務中為 Web 服務開發提供高級工具。 
          Toolkit for MPEG-4,Java 類和帶有簡單應用程序的 API 的集合,用于生成 MPEG-4 內容,以便與兼容 MPEG-4 的設備一起使用。 
          Update Tool,一種使基于 Java 桌面應用程序的用戶可以易于升級的機制。


          Java technology on alphaWorks 是 IBM 生成的 Java 相關技術的虛擬倉庫,包括 API、集成開發環境和 devkit、組件、參考實現和實用程序。


          WebSphere 系列的 Java 開發工具: 
          Application Server。 
          Branch Transformation Toolkit for WebSphere Studio,以前稱為 WebSphere Business Components Composer,是一組工具、組件和服務,它們用于加速構建訪問事務系統的多通道銀行應用程序。 
          MQ 是允許應用程序相互通信的應用程序編程服務。 
          MQ Everyplace 允許利用確定的消息提供方式訪問移動工作者和遠程設備的企業數據。 
          Business Integration Message Broker 幫助將信息引向需要它的位置和時間,以及幫助訪問公司數據,而不管數據位于何處,采用何種格式。 
          SDK for Web Services。 
          Studio Site Developer 為構建和維護動態 Web 站點、Web 服務和 Java 應用程序提供開發環境。 
          Studio Application Developer 是基于 Web 的應用程序的集成開發環境。 

          posted @ 2007-11-03 22:01 卓韋 閱讀(620) | 評論 (0)編輯 收藏

          需要下載fileupload和beanutils兩個包,代碼如下。

          實現文件的上傳,代碼如下:
          <%!
           //服務器端保存上傳文件的路徑
              String saveDirectory = "g:\\upload\\";
              // 臨時路徑 一旦文件大小超過getSizeThreshold()的值時數據存放在硬盤的目錄
              String tmpDirectory = "g:\\upload\\tmp\\";
              // 最多只允許在內存中存儲的數據大小,單位:字節
              int maxPostSize = 1024 * 1024;
          %>
          <%
              // 文件內容 
              String FileDescription = null;
              // 文件名(包括路徑)
              String FileName = null;
              // 文件大小
              long FileSize = 0;
              // 文件類型
              String ContentType = null;

          %>

          <%
             DiskFileUpload fu = new DiskFileUpload();
              // 設置允許用戶上傳文件大小,單位:字節
             fu.setSizeMax(200*1024*1024);
              // 設置最多只允許在內存中存儲的數據,單位:字節
             fu.setSizeThreshold(maxPostSize);
              // 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬盤的目錄
             fu.setRepositoryPath("g:\\upload\\tmp\\");
              //開始讀取上傳信息 得到所有文件
             try{
                List fileItems = fu.parseRequest(request);
               }catch(FileUploadException e){
                   //這里異常產生的原因可能是用戶上傳文件超過限制、不明類型的文件等
                   //自己處理的代碼
               }
          %>
          <%
             // 依次處理每個上傳的文件
             Iterator iter = fileItems.iterator();
             while (iter.hasNext()) {
               FileItem item = (FileItem) iter.next();
                 //忽略其他不是文件域的所有表單信息
               if (!item.isFormField()) {
                 String name = item.getName();
                 long size = item.getSize();
                 String  contentType = item.getContentType();
               if((name==null||name.equals("")) && size==0)
                 continue;
          %>
          <%
             //保存上傳的文件到指定的目錄
            String[] names=StringUtils.split(name,"\\");  //對原來帶路徑的文件名進行分割
             name = names[names.length-1];
             item.write(new File(saveDirectory+ name));
            }
          }
          %>
           下面是其簡單的使用場景:
           A、上傳項目只要足夠小,就應該保留在內存里。
           B、較大的項目應該被寫在硬盤的臨時文件上。
           C、非常大的上傳請求應該避免。
           D、限制項目在內存中所占的空間,限制最大的上傳請求,并且設定臨時文件的位置。
           
           可以根據具體使用用servlet來重寫,具體參數配置可以統一放置到一配置文件
           

           文件的下載用servlet實現
                public void doGet(HttpServletRequest request,
                                 HttpServletResponse response)
               {
                   String aFilePath = null;    //要下載的文件路徑
                   String aFileName = null;    //要下載的文件名
                   FileInputStream in = null;  //輸入流
                   ServletOutputStream out = null;  //輸出流

           

                   try
             {
                    
                       aFilePath = getFilePath(request);
                       aFileName = getFileName(request);

                       response.setContentType(getContentType(aFileName) + "; charset=UTF-8");
                       response.setHeader("Content-disposition", "attachment; filename=" + aFileName);

                       in = new  FileInputStream(aFilePath + aFileName); //讀入文件
                      out = response.getOutputStream();
                      out.flush();
                      int aRead = 0;
                     while((aRead = in.read()) != -1 & in != null)
                  {
                       out.write(aRead);
                   }
                     out.flush();
                }
                 catch(Throwable e)
               {
               log.error("FileDownload doGet() IO error!",e);
                }
                   finally
                   {
                       try
                       {
                           in.close();
                           out.close();
                       }
                       catch(Throwable e)
                       {
                        log.error("FileDownload doGet() IO close error!",e);
                       }
                   }
               }



          參考文獻:
          1、用fileupload處理文件上傳
          作者:◇ 劉冬 發文時間:2003.07.09 15:52:43 ,http://tech.ccidnet.com/pub/disp/Article?columnID=322&articleID=53966&pageNO=1
          講得非常清楚
          2、Jakarta Commons:巧用類和組件1 (2) 作者:Vikram Goyal 仙人掌工作室譯 ,http://www.uml.org.cn/j2ee/j2eeh2.htm

          3、Jsp如何實現網頁的重定向 ,2002-05-16· ·包路躍··Yesky,http://www.yesky.com/SoftChannel/72342371945283584/20020424/1608521.shtml

          4、判斷文件或文件夾是否存在,作者:羅會濤,http://www.fawcette.com/china/XmlFile.aspx?ID=205

          5、java.util中的Date類,By Wing, 出處:處處,http://www.linuxaid.com.cn/articles/1/1/119413536.shtml

          6、計算Java日期--學習怎樣創建和使用日期,作者:Robert Nielsen ,http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=497

          7、http://dev.csdn.net/article/67/67940.shtm

          posted @ 2007-09-25 13:26 卓韋 閱讀(5513) | 評論 (1)編輯 收藏

          Jakarta Commons FileUpload 用戶指南

          本文是分享文檔站長胡蘿卜的作品。大家可以自由閱讀、在網絡上進行分發,前提是必須保留本文檔的完整性。
          分享文檔是一家專業的Java技術網站,給中國Java 程序員提供各種Java資源如文檔,工具,教程,社區交流等。
          我們的官方網站是:http://chinesedocument.com
          我們的官方論壇是:http://bbs.chinesedocument.com
          請大家多多關注分享文檔,我們還會發布更多優秀的文檔!

          第1章 使用FileUpload
          FileUpload能以多種方式使用,這取決于你的應用需求。舉個簡單的例子,你可能調用一個單獨的方法來解析servelt的請求,并且處理那些項目。 從另一個方面來講,你可能想自定義FileUpload來完全控制個別項目的存貯;例如,你想流化那些內容,并存到數據庫里去。
          這里我們會介紹使用FileUpload的基礎原則,并描述一些簡單的通用的使用模式。我們會在在其它地方介紹關于FileUpload的自定義。
          FileUpload依賴于一些公用的IO,因此,要確保在你繼續之前,你的classpath里已經有依賴頁面里提起的那些版本。


          第2章 FileUpload如何工作?
          一個上傳請求由一系列根據RFC1867("Form-based File Upload in HTML".)編碼的項目列表組成。FileUpload可以解析這樣的請求,并為你的應用提供那些已上傳的項目的列表。每一個這樣的項目都實現了FielItem接口,我們不用管它們的底層實現。
          這個頁面描述了commons fileupload庫的常用API。這些常用API是非常方便的途徑。然而,為了最好的性能,你可能更喜歡最快的Streaming API 。
          每一個文件項目有一些自己的屬性,這些屬性也許正是你的應用程序感興趣的地方。例如,每個項目有個一個名字和內容類型,并且可以提供一個輸入流來訪問它們的數據。另一方面來看,你可能需要用不同方式來處理不同的項目,這就依賴于那些項目是否是一個正常的表單字域,也就是說,這些數據來自于一個普通的文本框或類似HTML的字域,還是一個要上傳文件字段。FileItem接口提供一些方法來做這樣一個決定,并且用最合適的方法訪問這些數據。
          FileUpload使用FileItemFactory創建一個新的文件項目。這將會給FileUpload最好的靈活性。工廠最終控制每個項目如何被創建。默認的工廠在內存或者硬盤里存儲項目的數據,這依賴于項目的大小(例如,有多少字節的數據。)。不過,為了適用于你的應用,你還是可以自定義這種行為的。


          第3章 servlets and portlets
          從V1.1版開始,FileUpload就開始支持servlet和portlet的文件上傳請求。這兩種環境的用法基本上差不多,因此,文檔的剩下部分都將是在servlet環境里。
          如果你正在構建一個portet應用,那么下面兩個差別是你在讀文檔時應注意的:
          你在哪里引用了ServletFileUpload類,就用PortletFileUpload類來替代它。
          你在哪里引用了HttpServletRequest類,就用ActionRequest類替代它。


          第4章 解析請求
          在你同那些上傳的項目一起工作前,你需要先解析請求本身。以確保這個請求確實是一個文件上傳請求。FileUpload是通過調用一個靜態方法來實現的。
          // Check that we have a file upload request
          boolean isMultipart = ServletFileUpload.isMultipartContent(request);
          現在,我們已經準備好解析請求里的項目了。

          4.1 最簡單的例子
          下面是一些簡單的使用場景:
          ??   上傳項目只要足夠小,就應該保留在內存里。
          ??   較大的項目應該被寫在硬盤的臨時文件上。
          ??   非常大的上傳請求應該避免。
          ??   限制項目在內存中所占的空間,限制最大的上傳請求,并且設定臨時文件的位置。
          處理這個場景的請求很簡單:
          // Create a factory for disk-based file items
          FileItemFactory factory = new DiskFileItemFactory();
          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);
          // Parse the request
          List /* FileItem */ items = upload.parseRequest(request);
          這就是我們所需要的全部代碼了!
          解析的結果就是一個項目的List,每個項目都實現了FileItem接口。我們將在下面討論如何處理這些項目。
          4.2 訓練如何控制
          如果你的使用場景和上面那個簡單的例子很接近,但是你又需要一點點控制,那么你可以很容易地定義upload處理器或者文件項目工廠的行為。下面這個例子顯示了幾個配置選項。
          // Create a factory for disk-based file items
          DiskFileItemFactory factory = new DiskFileItemFactory();
          // Set factory constraints
          factory.setSizeThreshold(yourMaxMemorySize);
          factory.setRepository(yourTempDirectory);
          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);
          // Set overall request size constraint
          upload.setSizeMax(yourMaxRequestSize);
          // Parse the request
          List /* FileItem */ items = upload.parseRequest(request);
          當然,每個配置方法是獨立于其它任意一個的。但是如果你想一次性配置他們,你可以用parseRequest()的另一個重載方法,像這樣:
          // Create a factory for disk-based file items
          DiskFileItemFactory factory = new DiskFileItemFactory(
          yourMaxMemorySize, yourTempDirectory);
          如果你還想使用更多的控制,比如存儲項目到其它地方(如,數據庫),那么你可以看FileUpload自定義介紹。


          第5章 處理上傳的項目
          一旦解析完成,那么你會得到一個待處理的文件項目列表。很多的情況下,你會想用不同的方式來處理文件上傳域和正常的表單域,因此,你可以這樣做:
          // Process the uploaded items
          Iterator iter = items.iterator();
          while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();
            if (item.isFormField()) {
              processFormField(item);
            } else {
              processUploadedFile(item);
            }
          }
          對于普通的表單域來說,你可能對項目的名稱和字符型值 很感興趣。就像你希望的那樣,照下面的做:
          // Process a regular form field
          if (item.isFormField()) {
            String name = item.getFieldName();
            String value = item.getString();
            ...
          }
          對于上傳文件,這里就有很多不同啦~你可能想知道更多其它的內容。下面是個例子,里面包含了不少你感興趣的方法。
          // Process a file upload
          if (!item.isFormField()) {
            String fieldName = item.getFieldName();
            String fileName = item.getName();
            String contentType = item.getContentType();
            boolean isInMemory = item.isInMemory();
            long sizeInBytes = item.getSize();
            ...
          }
          對于上傳的文件,你肯定不希望總是通過內存來訪問它,除非它很小,或者你實在沒有別的選擇余地了。你很希望使用流來處理文件內容或者將文件保存到它的最終位置。FileUpload提供簡單的方式來完成兩方面的需求。
          // Process a file upload
          if (writeToFile) {
            File uploadedFile = new File(...);
            item.write(uploadedFile);
          } else {
            InputStream uploadedStream = item.getInputStream();
            ...
            uploadedStream.close();
          }
          注意:在FileUpload的默認實現中wirte()方法應該值得關注,如果數據還在臨時文件里沒有移除,那么這個方法就會試圖重命名這個文件為相應的目標文件。事實上如果重命名失敗了的話,數據就僅僅被拷貝。
          如果你需要訪問內存中的上傳數據,你可以用get()方法來獲得數據的二進制數組形式。
          // Process a file upload in memory
          byte[] data = item.get();
          ...

          第6章 清除資源
          這一節只適用于你使用了DiskFileItem。換句話說,它只適用于你在處理上傳文件之前將上傳文件寫入過臨時文件這種情形。
          像這種臨時文件會被自動刪除, 如果它們不再被使用(更確切地說,java.io.File的實例已經被GC掉了。 )這是由org.apache.commons.io.FileCleaner類在后臺完成的,它會啟動一個收割機線程。
          這個收割機線程在它不再被需要時會被停止。在servlet環境里,這是通過指定一個名叫FileCleanerCleanup的servlet上下文監聽器來實現的。要做到這里,在你的web.xml增加下面的代碼:
          <web-app>
          ...
          <listener>
          <listener-class>
          org.apache.commons.fileupload.servlet.FileCleanerCleanup
          </listener-class>
          </listener>
          ...
          </web-app>
          不幸的是,事情到這里還沒完。如果你和下面的情況一樣,那么你就只需要按照上面的做,就可以清除資源了。
          你使用的是commons-io 1.3或者更晚的版本。
          你是從web應用的web-inf/lib里載入commons-io的,并不是從其它位置,如Tomcat的common/lib下。
          如果commons-io 1.3是從你的WEB容器的classpath里載入的,那么,下面的情況可能會出現:
          建議你運行兩個應用,一個叫A,一個叫B。(這兩個應用可能是完全一樣,只不過上下文名稱不一樣。)這兩個應用都使用了FileCleanerCleanup?,F在,如果你終止應用A,B還在運行,這時,A會終止B的收割機線程。換言之,你要十分仔細地考慮是使用FileCleanerCleanup,還是不使用。

          第7章 觀察上傳進度
          如果你希望可以上傳很大的文件,這時,你可能想將上傳的狀態告訴用戶,如已經接收了多少。
          觀察上傳進度需要通過一個處理監聽器來實現。
          //Create a progress listener
          ProgressListener progressListener = new ProgressListener(){
            public void update(long pBytesRead, long pContentLength, int pItems) {
              System.out.println("We are currently reading item " + pItems);
              if (pContentLength == -1) {
                System.out.println("So far, " + pBytesRead + " bytes have been read.");
              } else {
                System.out.println("So far, " + pBytesRead + " of " + pContentLength
                + " bytes have been read.");
              }
            }
          };
          upload.setProgressListener(progressListener);
          上面這個監聽器是有問題的。因為它非常頻繁地被調用。這會帶來性能問題。一個比較好的解決辦法是,減少調用。例如,如果megabytes被改變,那么就發出一個消息。
          //Create a progress listener
          ProgressListener progressListener = new ProgressListener(){
            private long megaBytes = -1;
            public void update(long pBytesRead, long pContentLength, int pItems) {
              long mBytes = pBytesRead / 1000000;
              if (megaBytes == mBytes) {
                return;
              }
              megaBytes = mBytes;
              System.out.println("We are currently reading item " + pItems);
              if (pContentLength == -1) {
                System.out.println("So far, " + pBytesRead + " bytes have been read.");
              } else {
                System.out.println("So far, " + pBytesRead + " of " + pContentLength
                + " bytes have been read.");
              }
            }
          };

          posted @ 2007-09-25 13:15 卓韋 閱讀(682) | 評論 (0)編輯 收藏

               摘要: Java 文件上傳 java文件上傳,介紹幾種常用的方法,也是經過本人親手調試過的 1.jspsmartupload 這個組件用起來是挺方便的,不過就是只適合小文件上傳,如果大文件上傳的話就不行,查看了一下他的代碼,m_totalBytes = m_request.getContentLength(); m_binArray = new byte[m_totalBytes];...  閱讀全文

          posted @ 2007-09-24 22:59 卓韋 閱讀(8669) | 評論 (1)編輯 收藏

          配置文件

          介紹
              每個 Linux 程序都是一個可執行文件,它含有操作碼列表,CPU 將執行這些操作碼來完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,該文件含有機器指令的列表,在屏幕上顯示當前目錄中文件的列表時需要使用這些機器指令。幾乎每個程序的行為都可以通過修改其配置文件來按照您的偏好或需要去定制。

          Linux 中有沒有一個標準的配置文件格式?
              一句話,沒有。不熟悉 Linux 的用戶(一定)會感到沮喪,因為每個配置文件看起來都象是一個要迎接的新挑戰。在 Linux 中,每個程序員都可以自由選擇他或她喜歡的配置文件格式??梢赃x擇的格式很多,從 /etc/shells 文件(它包含被一個換行符分開的 shell 的列表),到 Apache 的復雜的 /etc/httpd.conf 文件。

          什么是系統配置文件?
              內核本身也可以看成是一個“程序”。為什么內核需要配置文件?內核需要了解系統中用戶和組的列表,進而管理文件權限(即根據權限判定特定用戶(UNIX_USERS)是否可以打開某個文件)。注意,這些文件不是明確地由程序讀取的,而是由系統庫所提供的一個函數讀取,并被內核使用。例如,程序需要某個用戶的(加密過的)密碼時不應該打開 /etc/passwd 文件。相反,程序應該調用系統庫的 getpw() 函數。這種函數也被稱為系統調用。打開 /etc/passwd 文件和之后查找那個被請求的用戶的密碼都是由內核(通過系統庫)決定的。

              除非另行指定,Red Hat Linux 系統中大多數配置文件都在 /etc 目錄中。

          更改配置文件
              在更改配置文件時,如果程序不是由系統管理員或內核控制的,就要確保重新啟動過使用該配置的程序。普通用戶通常沒有啟動或停止系統程序和/或守護進程的權限。

          內核
              更改內核中的配置文件會立即影響到系統。例如,更改 passwd 文件以增加用戶將立即使該用戶變為可用。而且任何 Linux 系統的 /proc/sys 目錄中都有一些內核可調參數。只有超級用戶可以得到對所有這些文件的寫訪問權力;其它用戶只有只讀訪問權力。此目錄中文件的分類的方式和 Linux 內核源代碼的分類方式一樣。此目錄中的每個文件都代表一個內核數據結構,這些數據結構可以被動態地修改,從而改變系統性能。
          注意:在更改其中任何文件的任何值之前,您應該確保自己全面了解該文件,以避免對系統造成不可修復的損害。

          /proc/sys/kernel/ 目錄中的文件

          文件名 描述
          threads-max 內核可運行的最大任務數。
          ctrl-alt-del 如果值為 1,那么順序按下這幾個鍵將“徹底地”重新引導系統。
          sysrq 如果值為 1,Alt-SysRq 則為激活狀態。
          osrelease 顯示操作系統的發行版版本號
          ostype 顯示操作系統的類型。
          hostname 系統的主機名。
          domainname 網絡域,系統是該網絡域的一部分。
          modprobe 指定 modprobe 是否應該在啟動時自動運行并加載必需的模塊。


          守護進程和系統程序
              守護進程是永遠運行在后臺的程序,它默默地執行自己的任務。常見的守護進程有 in.ftpd(ftp 服務器守護進程)、in.telnetd(telnet 服務器守護進程)和 syslogd(系統日志記錄守護進程)。有些守護進程在運行時會嚴密監視配置文件,在配置文件改變時就會自動重新加載它。但是大多數守護進程并不會自動重新加載配置文件。我們需要以某種方式“告訴”這些守護進程配置文件已經被發生了改變并應該重新加載??梢酝ㄟ^使用服務命令重新啟動服務來達到這個目的(在 Red Hat Linux 系統上)。

              例如,如果我們更改了網絡配置,就需要發出:
              service network restart。

              注意:這些服務最常見的是 /etc/rc.d/init.d/* 目錄中存在的腳本,在系統被引導時由 init 啟動。所以,您也可以執行如下操作來重新啟動服務:
                  /etc/rc.d/init.d/<script-for-the-service> start | stop | status
                  start、stop 和 status 是這些腳本接受的輸入值,用來執行操作。
          [目錄]

          主機

          /etc/host.conf
              告訴網絡域名服務器如何查找主機名。(通常是 /etc/hosts,然后就是名稱服務器;可通過 netconf 對其進行更改)

          /etc/hosts
              包含(本地網絡中)已知主機的一個列表。如果系統的 IP 不是動態生成,就可以使用它。對于簡單的主機名解析(點分表示法),在請求 DNS 或 NIS 網絡名稱服務器之前,/etc/hosts.conf 通常會告訴解析程序先查看這里。

          /etc/hosts.allow
              請參閱 hosts_access 的聯機幫助頁。至少由 tcpd 讀取。

          /etc/hosts.deny
              請參閱 hosts_access 的聯機幫助頁。至少由 tcpd 讀取。


          [目錄]

          引導和登錄注銷

          /etc/issue & /etc/issue.net
              這些文件由 mingetty(和類似的程序)讀取,用來向從終端(issue)或通過 telnet 會話(issue.net)連接的用戶顯示一個“welcome”字符串。它們包括幾行聲明 Red Hat 版本號、名稱和內核 ID 的信息。它們由 rc.local 使用。

          /etc/redhat-release
              包括一行聲明 Red Hat 版本號和名稱的信息。由 rc.local 使用。

          /etc/rc.d/rc
              通常在所有運行級別運行,級別作為參數傳送。例如,要以圖形(Graphics)模式(X-Server)引導機器,請在命令行運行下面的命令:init 5。運行級別 5 表示以圖形模式引導系統。
          /etc/rc.d/rc.local
              非正式的??梢詮?nbsp;rc、rc.sysinit 或 /etc/inittab 調用。

          /etc/rc.d/rc.sysinit
              通常是所有運行級別的第一個腳本。

          /etc/rc.d/rc/rcX.d
              從 rc 運行的腳本(X 表示 1 到 5 之間的任意數字)。這些目錄是特定“運行級別”的目錄。當系統啟動時,它會識別要啟動的運行級別,然后調用該運行級別的特定目錄中存在的所有啟動腳本。例如,系統啟動時通常會在引導消息之后顯示“entering run-level 3”的消息;這意味著 /etc/rc.d/rc3.d/ 目錄中的所有初始化腳本都將被調用。


          [目錄]

          文件系統

          /proc
              內核提供了一個接口,用來顯示一些它的數據結構,這些數據結構對于決定諸如使用的中斷、初始化的設備和內存統計信息之類的系統參數可能很有用。這個接口是作為一個獨立但虛擬的文件系統提供的,稱為 /proc 文件系統。很多系統實用程序都使用這個文件系統中存在的值來顯示系統統計信息。
              例如,/proc/modules 文件列舉系統中當前加載的模塊。lsmod 命令讀取此信息,然后將其以人們可以看懂的格式顯示出來。下面表格中指定的 mtab 文件以同樣的方式讀取包含當前安裝的文件系統的 /proc/mount 文件。

          /etc/mtab
              這將隨著 /proc/mount 文件的改變而不斷改變。換句話說,文件系統被安裝和卸載時,改變會立即反映到此文件中。

          /etc/fstab
              列舉計算機當前“可以安裝”的文件系統。這非常重要,因為計算機引導時將運行 mount -a 命令,該命令負責安裝 fstab 的倒數第二列中帶有“1”標記的每一個文件系統。

          /etc/mtools.conf
              DOS 類型的文件系統上所有操作(創建目錄、復制、格式化等等)的配置。


          [目錄]

          系統管理

          /etc/group
              包含有效的組名稱和指定組中包括的用戶。單一用戶如果執行多個任務,可以存在于多個組中。例如,如果一個“用戶”是“project 1”工程組的成員,同時也是管理員,那么在 group 文件中他的條目看起來就會是這樣的:user: * : group-id : project1

          /etc/nologin
              如果有 /etc/nologin 文件存在,login(1) 將只允許 root 用戶進行訪問。它將對其它用戶顯示此文件的內容并拒絕其登錄。

          /etc/passwd
              請參閱“man passwd”。它包含一些用戶帳號信息,包括密碼(如果未被 shadow 程序加密過)。

          /etc/rpmrc
              rpm 命令配置。所有的 rpm 命令行選項都可以在這個文件中一起設置,這樣,當任何 rpm 命令在該系統中運行時,所有的選項都會全局適用。

          /etc/securetty
              包含設備名稱,由 tty 行組成(每行一個名稱,不包括前面的 /dev/),root 用戶在這里被允許登錄。

          /etc/usertty

          /etc/shadow
              包含加密后的用戶帳號密碼信息,還可以包括密碼時效信息。包括的字段有:
                  ·登錄名
                  ·加密后的密碼
                  ·從 1970 年 1 月 1 日到密碼最后一次被更改的天數
                  ·距密碼可以更改之前的天數 
           ·距密碼必須更改之前的天數
                  ·密碼到期前用戶被警告的天數
                  ·密碼到期后帳戶被禁用的天數
                  ·從 1970 年 1 月 1 日到帳號被禁用的天數

          /etc/shells
              包含系統可用的可能的“shell”的列表。

          /etc/motd
              每日消息;在管理員希望向 Linux 服務器的所有用戶傳達某個消息時使用。


          [目錄]

          網絡

          /etc/gated.conf gated 的配置。
              只能被 gated 守護進程所使用。

          /etc/gated.version
              包含 gated 守護進程的版本號。

          /etc/gateway
              由 routed 守護進程可選地使用。

          /etc/networks
              列舉從機器所連接的網絡可以訪問的網絡名和網絡地址。通過路由命令使用。允許使用網絡名稱。

          /etc/protocols
              列舉當前可用的協議。請參閱 NAG(網絡管理員指南,Network Administrators Guide)和聯機幫助頁。C 接口是 getprotoent。絕不能更改。

          /etc/resolv.conf
              在程序請求“解析”一個 IP 地址時告訴內核應該查詢哪個名稱服務器。

          /etc/rpc
              包含 RPC 指令/規則,這些指令/規則可以在 NFS 調用、遠程文件系統安裝等中使用。

          /etc/exports
              要導出的文件系統(NFS)和對它的權限。

          /etc/services
              將網絡服務名轉換為端口號/協議。由 inetd、telnet、tcpdump 和一些其它程序讀取。有一些 C 訪問例程。

          /etc/inetd.conf
              inetd 的配置文件。請參閱 inetd 聯機幫助頁。包含每個網絡服務的條目,inetd 必須為這些網絡服務控制守護進程或其它服務。注意,服務將會運行,但在 /etc/services 中將它們注釋掉了,這樣即使這些服務在運行也將不可用。格式為:<service_name> <sock_type> <proto> <flags> <user> <server_path> <args>

          /etc/sendmail.cf
              郵件程序 sendmail 的配置文件。比較隱晦,很難理解。

          /etc/sysconfig/network
              指出 NETWORKING=yes 或 no。至少由 rc.sysinit 讀取。

          /etc/sysconfig/network-scripts/if*
              Red Hat 網絡配置腳本。


          [目錄]

          系統命令

              系統命令要獨占地控制系統,并讓一切正常工作。所有如 login(完成控制臺用戶身份驗證階段)或 bash(提供用戶和計算機之間交互)之類的程序都是系統命令。因此,和它們有關的文件也特別重要。這一類別中有下列令用戶和管理員感興趣的文件。

          /etc/lilo.conf
              包含系統的缺省引導命令行參數,還有啟動時使用的不同映象。您在 LILO 引導提示的時候按 Tab 鍵就可以看到這個列表。

          /etc/logrotate.conf
              維護 /var/log 目錄中的日志文件。

          /etc/identd.conf
              identd 是一個服務器,它按照 RFC 1413 文檔中指定的方式實現 TCP/IP 提議的標準 IDENT 用戶身份識別協議。identd 的操作原理是查找特定 TCP/IP 連接并返回擁有此連接的進程的用戶名。作為選擇,它也可以返回其它信息,而不是用戶名。請參閱 identd 聯機幫助頁。
          /etc/ld.so.conf
              “動態鏈接程序”(Dynamic Linker)的配置。

          /etc/inittab
              按年代來講,這是 UNIX 中第一個配置文件。在一臺 UNIX 機器打開之后啟動的第一個程序是 init,它知道該啟動什么,這是由于 inittab 的存在。在運行級別改變時,init 讀取 inittab,然后控制主進程的啟動。

          /etc/termcap
              一個數據庫,包含所有可能的終端類型以及這些終端的性能。


          [目錄]

          守護進程

              守護進程是一種運行在非交互模式下的程序。一般來說,守護進程任務是和聯網區域有關的:它們等待連接,以便通過連接提供服務。Linux 可以使用從 Web 服務器到 ftp 服務器的很多守護進程。

          /etc/syslogd.conf
              syslogd 守護進程的配置文件。syslogd 是一種守護進程,它負責記錄(寫到磁盤)從其它程序發送到系統的消息。這個服務尤其常被某些守護進程所使用,這些守護進程不會有另外的方法來發出可能有問題存在的信號或向用戶發送消息。

          /etc/httpd.conf
              Web 服務器 Apache 的配置文件。這個文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要確定它的位置,您還需要檢查特定的 Apache 安裝信息。

          /etc/conf.modules or /etc/modules.conf
              kerneld 的配置文件。有意思的是,kerneld 并不是“作為守護進程的”內核。它其實是一種在需要時負責“快速”加載附加內核模塊的守護進程。


          [目錄]

          用戶程序

              在 Linux(和一般的 UNIX)中,有無數的“用戶”程序。最常見的一種用戶程序配置文件是 /etc/lynx.cfg。這是著名的文本瀏覽器 lynx 的配置文件。通過這個文件,您可以定義代理服務器、要使用的字符集等等。下面的代碼樣本展示了 lynx.cfg 文件的一部分,修改這部分代碼可以改變 Linux 系統的代理服務器設置。缺省情況下,這些設置適用于在各自的 shell 中運行 lynx 的所有用戶,除非某個用戶通過指定 --cfg = "mylynx.cfg" 重設了缺省的配置文件。

          /etc/lynx.cfg 中的代理服務器設置

          .h1 proxy
          .h2 HTTP_PROXY
          .h2 HTTPS_PROXY
          .h2 FTP_PROXY
          .h2 GOPHER_PROXY
          .h2 NEWS_PROXY
          .h2 NNTP_PROXY
          # Lynx version 2.2 and beyond supports the use of proxy servers that can act as
          # firewall gateways and caching servers. They are preferable to the older
          # gateway servers. Each protocol used by Lynx can be mapped separately using
          # PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
          # not set them externally, you can set them at run time via this configuration file.
          # They will not override external settings. The no_proxy variable can be used
          # to inhibit proxying to selected regions of the Web (see below). Note that on
          http://os.rdxx.com/Linux/2005-9/13/175108935_6.shtml

          posted @ 2007-09-23 20:40 卓韋 閱讀(224) | 評論 (0)編輯 收藏

          select node_num,report_time from app_standard where app_id='dzyy' and report_time between '2007-1-1' and '2008-1-1' order by report_time desc

          posted @ 2007-08-15 19:42 卓韋 閱讀(551) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 汝南县| 高清| 龙南县| 余庆县| 谷城县| 馆陶县| 得荣县| 武安市| 仪征市| 蓬莱市| 浦北县| 左贡县| 南投县| 永泰县| 调兵山市| 巫山县| 江安县| 新田县| 民县| 舒城县| 休宁县| 关岭| 安宁市| 汉川市| 徐州市| 玛多县| 永春县| 英吉沙县| 海原县| 新田县| 台东市| 上高县| 蓬溪县| 新竹市| 高青县| 贞丰县| 娱乐| 通榆县| 宁化县| 玉林市| 富顺县|