J2EE (七) 配置文件詳解以及dom4j進行解析

 
  1. 在看DRP項目的時候一邊看視頻一邊寫代碼,其中,涉及到了不少實用的知識點,這些多是做爲一個開發人員或設計人員必須熟悉掌握的東西,不管水平如何仍是須要了解了解,所以,拿出來總結一下或多或少加深理解和熟練程度,也是做爲積累和收穫。
    1. Java裏面各類設置都變得很是靈活這在不少的配置文件裏面就能夠看出來,可是配置文件裏面信息多了也給解析XML文件帶來了麻煩,因此,在Java中有不少專門用於解析文件的組件,只要你對DOM模型有些基礎即可以輕鬆的完成解析工做。
    2. 下面將主要說一下文件的配置和解析,經常使用的工具。
  1. Dom4j讀取XML文件
    1. dom4j是一個Java的XML API,相似於jdom,用來讀寫XML文件的,現在你能夠看到愈來愈多的Java軟件都在使用dom4j來讀寫XML
    2. 它的網站中這樣定義:Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.
    3. 解析配置文件
      1. 配置文件信息,sys-config.xml
        1. <?xml version="1.0" encoding="UTF-8"?>
          <config>
          	<!-- 標籤 -->
          	<db-info>
          		<!-- JDBC數據庫參數 -->
          		<driver-name>oracle.jdbc.OracleDriver</driver-name>
          		<url>jdbc:oracle:thin:@localhost:1521:ORCL</url>
          		<user-name>drp1</user-name>
          		<password>drp1</password>
          	</db-info>
          </config>

      1. 解析代碼
        1. 	/**
          	 * 使用dom4j從配置文件裏讀取數據
          	 */
          	private xmlConfigReader(){
          		//SAXReader類的read()方法能夠讀入輸入信息,創建一個SAXReader對象
          		SAXReader reader=new SAXReader();
          		//經過當前線程類的加載器,來得到引用資源文件的相對路徑,讀入緩衝輸入流
          		InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
          	
          		try{
          			//從輸入流中讀取信息
          			Document doc=reader.read(in);
          			//取得jdbc相關配置信息
          			Element driverNameEle=(Element)doc.selectObject("/config/db-info/driver-name");
          			Element urlNameEle=(Element)doc.selectObject("/config/db-info/url");
          			Element userNameEle=(Element)doc.selectObject("/config/db-info/user-name");
          			Element passwordEle=(Element)doc.selectObject("/config/db-info/password");
          			//設置jdbc相關配置信息
          			jdbcConfig.setDriverName(driverNameEle.getStringValue());
          			jdbcConfig.setUrlName(urlNameEle.getStringValue());
          			jdbcConfig.setUserName(userNameEle.getStringValue());
          			jdbcConfig.setpassword(passwordEle.getStringValue());
          			
          			
          		}catch(DocumentException e){
          			e.printStackTrace();
          		}	
          		
          	}
          a.關於
          Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");詳細解釋請點擊這裏:http://stackoverflow.com/questions/676250/different-ways-of-loading-a-file-as-an-inputstream,雖然是英文當解釋的很好。
      1. 固然這只是一個很是簡單的讀取文件,想要解析更復雜的文件,能夠本身查看dom4j-api文檔,它提供了很是多的API供使用,能夠完成你全部的解析任務,想要了解更多能夠本身查API
  1. 文件上傳
    1. 文件上傳是一個Web項目中不可缺乏的一項基本功能,幾乎全部系統都會用到這個上傳服務,提供上傳的不少組件已經由第三方寫好,都是一些成品構建,不須要咱們本身開發,咱們這裏利用完成Apache Commons fileupload上傳。
    2. 上傳示例
      1. 代碼以下:
      2. 	//文件的上傳路徑
        	private File uploadPath;
        	//臨時保存路徑
        	private File tempPath;
        	
        	public void doPost(HttpServletRequest req, HttpServletResponse res)
        			throws ServletException, IOException {
        		
        		DiskFileItemFactory factory = new DiskFileItemFactory();
        		// maximum size that will be stored in memory
        		factory.setSizeThreshold(4096);
        		// the location for saving data that is larger than getSizeThreshold()
        		factory.setRepository(tempPath);
        
        		ServletFileUpload upload = new ServletFileUpload(factory);
        		// maximum size before a FileUploadException will be thrown
        		upload.setSizeMax(1000000 * 20);
        		try {
        			List fileItems = upload.parseRequest(req);
        			
        			for (Iterator iter = fileItems.iterator(); iter.hasNext();) {
        				FileItem item = (FileItem) iter.next();
        				
        				//是否爲input="type"輸入域
        				if (!item.isFormField()) {
        					String fileName = item.getName();
        					long size = item.getSize();
        					if ((fileName == null || fileName.equals("")) && size == 0) {
        						continue;
        					}
        					//截取字符串 如:C:\WINDOWS\Debug\PASSWD.LOG
        					fileName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
        					//item.write(new File(uploadPath + itemNo + ".gif"));
        					item.write(new File(uploadPath, fileName));
        					//調用網數據庫裏面寫東西的代碼
        				}
        			}
        		} catch (Exception e) {   
        			e.printStackTrace();
        		}
        	}   
        
        	public void init() throws ServletException {
        		uploadPath = new File(getServletContext().getRealPath("upload"));
        		System.out.println("uploadPath=====" + uploadPath);
        		//若是目錄不存在
        		if (!uploadPath.exists()) {   
        			//建立目錄  
        			uploadPath.mkdir();     
        		} 
        		   
        		//臨時目錄
        		tempPath = new File(getServletContext().getRealPath("temp"));
        		if (!tempPath.exists()) {
        			tempPath.mkdir();
        		}
        		//顯示調用父類的初始化方法
        		super.init();
        	}

  1. 配置文件的配置,如Web.XML,下面分別是各類需求的配置
    1. Servlet以及初始化參數
      1.  
          <!--設置物料查詢Servlet-->
          <servlet>
          	<servlet-name>SearchItemServlet</servlet-name>
          	<servlet-class>com.bjpowernode.drp.basedata.web.SearchItemServlet</servlet-class>
          	<init-param>
          		<param-name>page-size</param-name>
          		<param-value>3</param-value>
          	</init-param>
           </servlet>
           <servlet-mapping>  
           	 <servlet-name>SearchItemServlet</servlet-name>
           	 <url-pattern>/servlet/item/SearchItemServlet</url-pattern>
           </servlet-mapping>

    1. Filter過濾器
      1.   <servlet>
          	<servlet-name>FileUploadServlet</servlet-name>
          	<servlet-class>com.bjpowernode.drp.basedata.web.FileUploadServlet</servlet-class>
            <load-on-startup>10</load-on-startup>
           </servlet>   
           <servlet-mapping>
           	 <servlet-name>FileUploadServlet</servlet-name>
           	 <url-pattern>/servlet/item/FileUploadServlet</url-pattern>
           </servlet-mapping>

    1. Exception異常類
      1.  	<error-page>
         		<exception-type>com.bjpowernode.drp.util.ApplicationException</exception-type>
         		<location>/error.jsp</location>
         	</error-page>

    1. Error page
      1.   
         	<error-page>
        		<error-code>404</error-code>
        		<location>/http_error.jsp</location>
         	</error-page> 

    1. 更詳細Web設置見博客:http://blog.csdn.net/jupiter97/article/details/1584635
  1. 另外,還有不少須要瞭解以及須要深刻研究的東西,這些只是開發項目中最基本的簡單設置,隨着項目的複雜各類配置也會變得複雜,還須要設計人員有一個清晰的架構。
相關文章
相關標籤/搜索