程序手記

          程序是我畢生的追求......
          隨筆 - 19, 文章 - 0, 評論 - 9, 引用 - 0
          數(shù)據(jù)加載中……

          2008年8月3日

          JSP基礎(chǔ) (文件上傳) 第二十二天

              把一個指定的文件上傳到服務(wù)器,通常依靠JSP技術(shù)完成,需要使用到兩個JSP頁面。第一個JSP頁面是選擇要上傳的文件,第二個JSP頁面是從客戶端獲取該文件里面的信息,并把這些信息以客戶端相同的格式保存在服務(wù)器端,該頁面主要為功能處理頁面。
              第一個頁面的實(shí)現(xiàn)必須含有FILE類型的表單,并且表單的enctype的屬性必須為"muldtipart/form-data"。
              第二個頁面要使用內(nèi)置對象request調(diào)用方法getInputStream()獲得一個輸入流,通過這個輸入流讀取客戶上傳的全部信息,如上傳文件的 名字,文件的大小,文件的類型。根據(jù)request所獲得的信息創(chuàng)建一個數(shù)據(jù)輸出流對象,把信息寫到一個指定的文件內(nèi)

              第一個文件內(nèi)容如下:
                  <body>
                      <form method="post" action="file_14.jsp" enctype="multipart/form-data">
                          <input type="file" name="file1" size="50" /><br>
                          <input type="submit" value="上傳" />
                      </form>

              第二個文件內(nèi)容如下:
                  <%@ page contentType="text/html; charset='utf-8'" %>
                  <%@ page import="java.io.*" %>
                  <%@ page import ="java.util.*"%>
                  <%@ page import="javax.servlet.*"%>
                  <%@ page import = "javax.servlet.http.*" %>
                  <body>
                  <%
                      int MAX_SIZE = 102400 * 102400;    //定義上傳文件的最大字節(jié)
                      String rootPath;    //創(chuàng)建跟路徑的保存變量
                      DataInputStream in = null;    //聲明文件讀入類
                      FileOutpubStream fileOut = null;    //
                      String remoteAddr = request.getRemoteAddr();    //取得客戶端的網(wǎng)絡(luò)地址
                      String servName = request.getServerName();    //獲得服務(wù)器的名字
                      out.print("serverName=" + serverName + "<br>");
                      out.print("request.getServletPath() = " + request.getServletPath() + "<br>")

          posted @ 2008-08-22 00:29 程序手記 閱讀(245) | 評論 (0)編輯 收藏

          JavaBean基礎(chǔ) (javabean簡介) 第二十一天

              JavaBean是一個可重復(fù)使用、且跨平臺的軟件組件(SoftWare Component),它可以在軟件開發(fā)工具如:Borland JBuilder \ Oracle JDeveloper 或是 Sun ONE Studio 等等里,以可視化的開發(fā)方式來開發(fā)。
              首先,你可以將JAVABEAN視為一個黑盒子(Black Box),雖然知道這個軟件組件所具備的功能,卻不知其內(nèi)部是如何運(yùn)作的。筆者提供給讀者一個假象的情況:有一個黑盒子,只知道它上面有一個按鈕,你只要按下去經(jīng)過十分鐘,就會掉下一張一千元的鈔票,不過你看不見其內(nèi)部任何的構(gòu)造,而這就是JAVABEAN最重要的特性,它將許多的信息都封裝了起來,用戶無需知道黑盒子如何產(chǎn)生出鈔票,只需知道按下那個按鈕,然后等十分鐘,超片就會自動產(chǎn)生出來。
              一般而言,JAVABEAN可分為:有用戶接口(user interface)的javabean和沒有用戶接口的javabean,通常JSP是搭配沒有UI的JAVABEAN,因此后面所提到的JAVABEAN都知識單純處理一些食物,如:數(shù)據(jù)運(yùn)算,連接數(shù)據(jù)庫和數(shù)據(jù)處理,等等,至于有用戶接口的JAVABEAN部分,請讀者自己參考JAVABEAN的相關(guān)書籍。
              通常一個標(biāo)準(zhǔn)的JAVABEAN有如下幾項(xiàng)特性:
              (1)javabean是一個公開的(public)類;
              (2)javabean類必須有一個無傳入?yún)?shù)(zero-argument)的構(gòu)造函數(shù)(constructor);
              (3)取得或設(shè)置屬性時(shí),必須使用getXXX方法或setXXX方法。

          例子:
              package tw.com.javaworld.CH8;
              
              import java.io.*;
              
              public class SimpleBean{
                  public SimpleBean(){
                  }
                  private String name;
                  private String number;
                  
                  public void setNumber(String number){
                      this.number = number;
                  }
                  public String getName(){
                      return name;
                  }
              }

          posted @ 2008-08-21 23:09 程序手記 閱讀(508) | 評論 (0)編輯 收藏

          JSP基礎(chǔ) (JSP動作元素) 第二十一天

              與JSP指令元素不同的是,JSP動作元素在請求處理階段起作用。JSP動作元素是試用XML語法寫成的,它可以采用以下兩種格式:
              <prefix:tag attribute = value attribute-list.../>
          或者
              <prefix:tag attribute = value attribute-list.../>
              ...
              </prefix.tag>
          SERVLET容器在處理JSP時(shí),每當(dāng)遇到這種動作元素,都根據(jù)它的標(biāo)記進(jìn)行特殊處理。
          JSP規(guī)范定義了一系列的標(biāo)準(zhǔn)動作,它用JSP作為前綴。這些標(biāo)準(zhǔn)的動作不去慣容器是如何實(shí)現(xiàn)的,但是每個WEB容器都必須提供這些操作類型。標(biāo)準(zhǔn)動作為網(wǎng)頁設(shè)計(jì)者提供了基本的功能,其他的廠商可以自由提供其他的非標(biāo)準(zhǔn)動作以增強(qiáng)功能。
              標(biāo)準(zhǔn)動作有:
          <jsp:useBean>
          <jsp:setProperty>
          <jsp:getProperty>
          <jsp:param>
          <jsp:include>
          <jsp:forward>
          <jsp:plugin>
          <jsp:fallback>
          <jsp:attribute>
          <jsp:body>
          <jsp:invoke>
          <jsp:doBody>
          <jsp:element>
          <jsp:output>
          <jsp:scriptelet>
          <jsp:declaration>等
          在標(biāo)準(zhǔn)動作中,有許多是XML語法的動作元素,比如<jsp:scriptelet> <jsp:declaration>但他們的使用并不廣泛,下面介紹JSP中主要的動作元素。

          文件導(dǎo)入標(biāo)記<jsp:include>
          include用于允許在請求時(shí)間內(nèi)在縣城的JSP頁面里包含靜態(tài)或者動態(tài)資源。被包含的對象只有對JSPWRITER對象的訪問權(quán),并且它不能設(shè)置頭或者COOKIE,如果頁面輸出是緩沖的,那么緩沖區(qū)的刷新要有限于包含的刷新。此指令在運(yùn)行的效率上比<%@ page include %>指令的效率低,但是可以動態(tài)增加內(nèi)容。用戶可以通過一下的格式來使用文件導(dǎo)入標(biāo)記
              <jsp:include page="{relativeURL | <%=expression%>}" flush="true" />
              <jsp:include page="{relativeURL | <%=expression%>}" flush = "true" >
                  <jsp:param name="parameterName" value="{parameterValue | <%=expression%>}"
              </jsp:include>

              例如:
              <jsp:include page="admin/login.jsp" />
              <jsp:include page="copyright.html" />
              <jsp:include page="admin/login.jsp">
                  <jsp:parame name = "username" value="JackLong" />
              </jsp:include>

          頁面轉(zhuǎn)向標(biāo)記<jsp:forward />
          實(shí)例:
              <jsp:forword page="showinfo.jsp" >
                  <jsp:param name = "username" value = "<%=request.getParameter("username")%>"/>
                  <jsp:param name = "telephone" value = "<%=request.getParameter("telephone")%>"/>
              </jsp:forword>

          posted @ 2008-08-21 05:20 程序手記 閱讀(484) | 評論 (0)編輯 收藏

          JSP基礎(chǔ) (獲取當(dāng)前時(shí)間) 第二十一天

              下面的代碼用于顯示當(dāng)前時(shí)間,并根據(jù)當(dāng)前是幾點(diǎn)輸出相應(yīng)的提示信息,其中,使用java.util.Date thisday=new java.util.Date();語句來取得當(dāng)前時(shí)間,然后通過相應(yīng)的方法取得年,月,日,時(shí)和分的信息并輸出:

          <% page contentType="text/html; charset=utf-8" import="java.util.*" %>
          <body>
          <%
          //獲取當(dāng)前的時(shí)間
          java.util.Date thisday = new java.util.Date();
          %>
          當(dāng)前時(shí)間:
          <%=thisday.getYear()+1900%>年
          <%=thisday.getMonth()+1%>月
          <%=thisday.getDate()%>日
          <%=thisday.getHours()%>時(shí)
          <%=thisday.getMinutes()%>分
          <%
          String str = "歡迎訪問:"
          int num = this.getHours();
          switch(num){
              case 8:
              case 9:
              case 10:
              case 11:
              {
                  out.print("歡迎你的訪問,上午好!");
                  break;
              }
              case 12:
              {
                  out.print("中午好!");
                  break;
              }
              case 13:
              case 14:
              case 15:
              case 16:
              case 17:
              case 18:
              {
                  out.print("下午好!");
                  break;
              }
          </body>

          posted @ 2008-08-21 04:23 程序手記 閱讀(1262) | 評論 (0)編輯 收藏

          JSP基礎(chǔ) (高級計(jì)數(shù)器實(shí)例) 第二十天

                                                                                     countFile.java
          public class countFile{
              public static void writeFile(String filename,long count){
                  PrintWriter out = new PrintWriter(new FileWriter(filename));
                  out.println(count);
                  out.close();
              }
              public static void readFile(String filename){
                  File f = new File(filename);
                  if(!f.exists()){
                      writeFile(filename,0);
                  }
                  BufferedReader in = new BufferedReader(new FileReader(f));
                  long count = Long.parseLong(in.readline());
                  return count;
              }
              public static String tranform(long count){
                  String countNumber = ""+count;
                  String newstring = "";
                  for(int i=0;i<countNumber.length;i++){
                      newstring+="<img src='images/"+countNumber.charAT(i)+".gif' >";
                  }
                  return newstring;
              }
          }

          posted @ 2008-08-20 05:19 程序手記 閱讀(181) | 評論 (0)編輯 收藏

          TOMCAT基礎(chǔ) (設(shè)定站點(diǎn)) 第十三天

              在Tomcat 上建立一個 JSPBook站點(diǎn)時(shí),我們需要修改Tomcat的server.xml文件,server.xml位于{Tomcat_Install}\conf\server.xml(例如:e:\apache software foundation\tomcat 5.0\conf\server.xml)。

              server.xml
              
              ......
              <!--Tomcat Root Context-->

              <!--
                  <Context path="" docBase="ROOT" debug="0">
              -->
              <Context path="/JSPBook" docBase="JSPBook" debug="0" crosscontext = "true" reloadable="true" >
              </Context>
              </Host>
              </Engine>
              </Service>
              </server>

              這部分主要是設(shè)定JSPBOOK站點(diǎn),其中 path="/jspbook"代表網(wǎng)站名稱,即 http://ip_domainName/jspbook;
          docBase = "jspbook" 代表站點(diǎn)的目錄位置,debug則是設(shè)定debug lerel,0表示提供最少的信息,9表示提供最多的信息; reloadable則表示tomcat在執(zhí)行時(shí),當(dāng)class ,web.xml被更新過時(shí),都會自動重新加載,不需要重新啟動tomcat。

          posted @ 2008-08-13 17:36 程序手記 閱讀(164) | 評論 (0)編輯 收藏

          JAVA基礎(chǔ) (JAVA中的STATIC塊) 第十三天(對浪費(fèi)的前10天表示悔恨)

          Java 程序中時(shí)常用些 static{}這樣的結(jié)構(gòu)。
          這樣的結(jié)構(gòu)叫 static塊,一般是一個類初始化時(shí)運(yùn)行的代碼。注意,是類的初始化,不是對象的初始化。
          也就是你在定義對象時(shí),他運(yùn)行的初始化代碼,并且只有第一次定義時(shí)才運(yùn)行。之后就不再運(yùn)行初始化了。
          一個類中可以有很多static塊。static塊按順序執(zhí)行。

          看以下代碼:
          public class TestStatic{
              static{
                  System.out.println(1);
              }
              static {
                  System.out.println(2);
              }
              static {
                  Stystem.out.println(3);
              }
              public static void main(String args[]){
                  System.out.println(5);
              }
              static {
                  System.out.println(4);
              }
          }
          執(zhí)行結(jié)果是:
          1
          2
          3
          4
          5
          一目了然,首先調(diào)用的是static靜態(tài)塊的代碼,然后調(diào)用啟動方法,而STATIC塊的執(zhí)行順序是由代碼的編寫順序執(zhí)行的過程,STATIC塊大家用的比較少,其實(shí)就是在對象生成之際產(chǎn)生的一系列的STATIC變量。

          posted @ 2008-08-13 16:22 程序手記 閱讀(346) | 評論 (0)編輯 收藏

          JAVA WEB開發(fā) (First Servlet Samlet Code) 第四天

          HelloServlet.java

          package tw.com.javaworld.CH2;

          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.io.*;

          public class HelloServlet extends HttpServlet{
              //Initialize global variables
              public void init(ServletConfig config) throws ServletException{
                  super.init(config);
              }
              
              //Process the HTTP Get request
              public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
                  response.setContentType("text/html;charset=GB2312");
                  PrintWrite out = response.getWrite();
                  out.println("<html>");
                  out.println("<body>");
                  out.println("Hello World<br>");
                  out.println("大家好");
                  out.println("</body>");
                  out.println("</html>");
                  out.close();
              }

              //Get Servlet information
              public String getServletInfo(){
                  return "tw.com.javaworld.CH2.HelloServlet Information";
              }
          }

          posted @ 2008-08-04 18:15 程序手記 閱讀(240) | 評論 (0)編輯 收藏

          Java WEB開發(fā) (TomCat配置) 第四天

          Tomacat是一個WEB容器,所有的J2EE WEB程序可以在此處運(yùn)行。常見的WEB容器還有WebLogic、WebSphere。

          Tomcat的默認(rèn)端口號是8080,這個數(shù)值可以在安裝過程中修改也可以在conf/server.xml中修改。

          Tomcat是根據(jù)系統(tǒng)的%JAVA_HOME%變量值選擇系統(tǒng)中的JDK。

          Tomcat目錄主要文件夾作用

          • bin目錄:存放啟動和關(guān)閉Tomcat的腳本
          • conf目錄:存放不同配置文件,其中比較重要的是server.xml(Tomcat的主要配置文件)和web.xml
          • work目錄:存放JSP編譯后的.class文件
          • webapps目錄:存放WEB應(yīng)用程序
          • lib目錄:存放所有需要的各種jar包

          配置Tomcat方式有兩種:手工配置--修改conf/server.xml文件、管理控制臺配置

          • 注意:修改server.xml之后要重新啟動Tomcat服務(wù)器才能使配置生效

          配置虛擬目錄的要求

           

           

          • 修改server.xml文件
          • 虛擬目錄的結(jié)構(gòu)要符合要求
            • WebRoot
              • WEB-INF
                • web.xml
            • 其中web.xml的內(nèi)容一般為:

               


              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
              version="2.4">

              Welcome to Tomcat

              Welcome to Tomcat

          • 創(chuàng)建好虛擬目錄之后要在server.xml中之前添加一句 (大小寫敏感,修改完之后應(yīng)該重新啟動Tomcat服務(wù)器使配置生效)

          若設(shè)置虛擬目錄后訪問目錄提示404錯誤而可以運(yùn)行目錄下的jsp文件則說明是目錄權(quán)限被禁用,可以修改conf/web.xml文件找到 將下面一行中的false改成true

          jsp文件的運(yùn)行過程: *.jsp  -->  *.java  -->  *.class  -->  運(yùn)行顯示 

          • *.class是第一次運(yùn)行生成后存放在work目錄下的,所以jsp文件第一次或者修改后首次運(yùn)行比較慢而后來再運(yùn)行的速度很快

          posted @ 2008-08-04 16:39 程序手記 閱讀(318) | 評論 (0)編輯 收藏

          JAVA基礎(chǔ) (嵌套類) 第四天

              Java允許將類的定義方在其他類的內(nèi)部,形成嵌套類。嵌套類使邏輯關(guān)系緊密的類組成一個整體,嵌套類可以用于訪問其所在的類的作用域。

          嵌套類可以訪問外部類似有成員。
              // OuterNested1.java
          public class OuterNested1{
              private int size;
              public class Nested{
                  public int doStuff(){
                      //嵌套類可以訪問OuterNested1類的似有成員 size 變量
                      return(size++);
                  }
              }
              public int testTheNested(){
                  Nested i = new Nested();
                  return(i.doStuff());
              }
          }

          //TestOuterNested1.java
          public class TestOuterNested1 {
              public static void main(String[] args){
                  outerNested1 outer = new OuterNested1();
                  System.out.println(outer.testTheNested());
              }
          }

          posted @ 2008-08-04 15:21 程序手記 閱讀(178) | 評論 (0)編輯 收藏

          JAVA基礎(chǔ) (包 與 Java API) 第二天 第四天

              建立Java包,布局源文件和設(shè)置classpath參數(shù)之間相互影響。也相互關(guān)聯(lián)。正確建立和導(dǎo)入JAVA包,合理布局源文件,準(zhǔn)確設(shè)置CLASSPATH參數(shù),才能保證應(yīng)用程序順利執(zhí)行,并有效管理應(yīng)用程序。

          包的建立方法
              Java包通過package語句建立,基本語法是:
                  package cn.edu.jmu.graphis;
              在定義類或接口的源文件開始處,通過package語句,可以將相應(yīng)的類或接口放入package所聲明的包里。包是相關(guān)類和接口的集合,提供了訪問級別控制和命名控件管理。

          包的使用方法
              每個源文件只能有一個包聲明,并且一定要求放在源文件的開始位置。如果一個源文件沒有包語句,則源文件所定義的類或接口唄系統(tǒng)放入默認(rèn)包中。包有層次,層次間由點(diǎn)分隔。
              例如有一組與圖形相關(guān)的類,包括Circles,Rectangles,Lines和points類等,描述了畫圖所用到的各種圖形組件,另有抽象類Graphic標(biāo)識圖形組件的共性,接口Draggable表示用戶可以通過鼠標(biāo)拖拽成圖的圖形組件。在這種情況下,我們不僅需要,而且也應(yīng)該將這些相關(guān)類和接口組成包,可命名為graphics如:

          //Graphics.java
          package graphics;
          public abstract class Graphic{
              ...
          }

          //Circle.java
          package graphics;
          public class Circle extends Graphic implements Draggable {
              ...
          }

          //Rectangle.java
          package graphics;
          public class Rectangle extends Graphic implements Draggable {
              ...
          }

          //Draggable.java
          package graphics;
          public interface Draggable{
              ...
          }
              通過創(chuàng)建和使用包,程序員不僅可以很容易地確定哪些類和接口是相關(guān)的,也可以很容易地找到提供特定功能的類和接口,例如,與畫圖有關(guān)的類和接口在graphics包中。

          包的訪問權(quán)限
              通過聲明類的訪問級別,可以控制對類的訪問權(quán)限。
              類的訪問級別分為默認(rèn)級和public級。定義類的默認(rèn)訪問級別不需要任何關(guān)鍵字,唄聲明為默認(rèn)級的類只對同一個包中的類是可視的。也就是說只有同一個包內(nèi)的類實(shí)例可以訪問這個類,外界不能訪問它。如果用關(guān)鍵字public定義類,不但同一個包里的其他類可以訪問這個類,其他包中的類也可以訪問它。換句話說,同一個包中的類,相互之間有不受限制的訪問權(quán)限。而在不同包中,只有public類可以被訪問。
              public修飾符不知用于定義類的訪問控制級別,也可以應(yīng)用于接口,方法或變量。public 接口同public類一樣,可以由應(yīng)用程序中的任何類訪問。而public方法或public屬性對任何可以訪問他的類或接口都是可視的。
              除public修飾符之外,用于訪問控制的修飾符還有protected 和 private。
          protected 或 private 僅用來定義方法或變量的訪問控制級別。protected 方法或protected變量僅對同一個包內(nèi)的類或不同包中的子類來說是可視的。
          private方法和pvivate變量對外部定義的類均不可視。

          包的命名方式
              包提供了心的命名控件,即使所定義的類使用與其他包中的類相同的名字,只要包類所屬的包不同名,就不會引起沖突。原因是這些類的全程限定名稱不同。類的全程限定包含了類的各層包名。這實(shí)質(zhì)上是應(yīng)用了面向?qū)ο蟮母拍睿瑢㈩惙庋b入包中。

          包的訪問權(quán)限
              通過聲明類的訪問級別,可以控制對類的訪問權(quán)限。
              類的訪問級別分為默認(rèn)級和public級。定義類的默認(rèn)訪問級別不需要任何關(guān)鍵字,貝聲明為默認(rèn)級的類只對同一個包中的類是可視的。也就是說,只有同一個包內(nèi)的類實(shí)例可以訪問這個類,外界不能訪問它。如果用關(guān)鍵字public 定義類,不但同一個包里的其他類可以訪問這個類,其他包中的類也可以訪問它。換句話說,同一個包中的類,相互之間有不受限制的訪問權(quán)限。而在不同的包中,只有public類可以被訪問。
              public 修飾符不只用于定義類的訪問控制級別,也可以應(yīng)用于接口,方法和變量。public接口同public類一樣,可以由應(yīng)用程序中的任何類訪問。而public方法或public變量對任何可以訪問他的類或接口都是可視的。
              除public 修飾符之外,用于訪問控制的修飾符還有 protected 和private 。 protected或private僅用來定義方法或變量的訪問控制級別。protected方法或protected變量僅對同一個包內(nèi)的類或不同包中的子類來說是可視的。private方法和private變量對外部定義的類均不可視。需要說明的是,通常不建議用默認(rèn)方式定義方法或成員變量的訪問級別。

                                
              對于沒有指定包名的java源文件,系統(tǒng)認(rèn)為他們都屬于同一個默認(rèn)的包。如果沒有把自己的Java類放入某個包中,那么任何默認(rèn)包里的對象都可以訪問它,并且不局限于同一個子目錄下,因此通常應(yīng)該在每個Java源文件的項(xiàng)目頂部使用 package語句,指明它所屬的包。

          訪問包成員
              對于包來說,只有它的public成員可貝外界訪問。若外界想要訪問包的public類,有3種方式可以實(shí)現(xiàn)。
              (1)通過類的全程限定名訪問該類。
              (2)通過import語句導(dǎo)入該類。
              (3)通過import語句導(dǎo)入整個包。
              如果某個類只貝訪問一次,那么可以直接使用類的全名。例如訪問cn.edu.jmu.graphics.Graphic類可以用一下方式:
              cn.edu.jmu.graphics.Graphic aGraph = new cn.edu.jmu.graphics.Graphic();
              這條語句創(chuàng)建了 cn.edu.jmu.graphics.Graphic類型的對象 aGraph。
              可以看到,即是指創(chuàng)建一個對象,在變量定義和初始化時(shí)也用到兩次全名。當(dāng)使用Java約定的包命名方式時(shí),包名可能過長,此時(shí)用起來就更顯得繁瑣,容易出錯,也影響可讀性。
              通常都應(yīng)該使用import語句直接導(dǎo)入所需類,或者導(dǎo)入該類所在的包。導(dǎo)入之后,程序中設(shè)計(jì)的這個類的地方就可以直接用類名訪問。
              import 的基本語法形式為:
              import <包名>[.<子包名>].<類名>;    //導(dǎo)入指定類
          或者:
              import <包名>[.<子包名>].*;    //導(dǎo)入整個包
          例如:
              import cn.edu.jmu.javaprogs.Timel;
              import cn.edu.jmu.javaprogs.*;
              import java.awt.*;
              import java.awt.event.*;

              import語句在package 語句之后,所有的類聲明之前。由于集中在程序首部,宜于直觀地了解程序所需的包,有助于維護(hù)程序的可移植性。
              import 語句中的 * 用來匹配包中的所有類,但并不能用來匹配包中的所有類的某個子集。如語句
              import java.awt.*;
              導(dǎo)入java.awt包中的所有類。如果這樣的語句
              import java.awt.A*;
              它無法導(dǎo)入java.awt句中首字母為A的所有子類,相反還會出現(xiàn)編譯錯誤,也就是說,使用import語句一次只能導(dǎo)入包的單一成員,或者導(dǎo)入整個包。
              還有語句
              import java.awt.*;
              所導(dǎo)入的是java.awt包中的所有類,它包括接口。但不包括java.awt包中的子包。如果需要訪問java.awt.event子包中的類,仍需要用 import語句導(dǎo)入 java.awt.event子包。所以常常使用如下形式:
              import java.awt.*;
              import java.awt.event.*;

            

          包的布局
              類的全程受名稱與類所在目錄一一對應(yīng),例如:
              import graphics.Rectangle    等同于文件路徑名:
              Graphics\Rectangle.java


          classpath參數(shù)
              classpath參數(shù)用于設(shè)置Java包所在的頂級目錄。也就是說,通過classpath可以為Java包建立所依存的目錄列表。編譯和運(yùn)行Java 程序時(shí),系統(tǒng)會自動從classpath環(huán)境變量中讀取包所在的目錄,文件所在目錄由系統(tǒng)通過classpath中的目錄和package語句中定義的目錄合成。
              下面通過一個完整的實(shí)例程序,說明classpath參數(shù)的作用,同時(shí)展示源文件和字節(jié)碼文件的一種建議布局模式。
              程序包含兩個類 Time 和 TestTime,TestTime為主類。程序?qū)τ脩糨斎氲谋硎拘r(shí)、分鐘和秒鐘的3個整型數(shù),經(jīng)過數(shù)據(jù)正確性驗(yàn)證,分別轉(zhuǎn)換為通用時(shí)間表示格式和標(biāo)準(zhǔn)時(shí)間表示格式,通過對話框顯示給用戶,運(yùn)行后如圖:
                                                                                

              文件布局方式如下:創(chuàng)建 d:\javaSample 目錄存放java程序,創(chuàng)建 d:\javaSample\src 子目錄存放源文件,創(chuàng)建d:\javaSample\class 子目錄存放編譯后的字節(jié)碼文件。 具體實(shí)現(xiàn)方式是將文件 TestTime.java 存放在 D:\javaSample\src 子目錄下,為使 src 子目錄的結(jié)構(gòu)與 class 子目錄結(jié)構(gòu)相對應(yīng),創(chuàng)建 D:\javaSample\src\cn\edu\jmu\timer 子目錄存放 Time.java文件。類Time和類TestTime的布局如圖:
                                        
              Time.java中的語句
              package cn.edu.jmu.timer;
              將Time類放入包c(diǎn)n.edu.jmu.timer中,源文件Time.java存放在與包相對應(yīng)的目錄結(jié)構(gòu)下。在類TestTime.java中通過語句   import cn.edu.jmu.timer.Time;   導(dǎo)入Time類。
              需要設(shè)置classpath參數(shù),規(guī)定程序中的包    cn.edu.jmu.timer 編譯所依存的頂級目錄為 d:\javaSample\class,如:
                          set classpath = d:\javaSample\class;
              編譯:
                  javac -d d:\javaSample\class
                  d:\javaSample\src\cn\edu\jmu\timer\Time.java 
                  javac -d d:\javaSample\class d:\javaSample\src\TestTime.java
              運(yùn)行:
                  java TestTime

          posted @ 2008-08-03 00:40 程序手記 閱讀(358) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 平江县| 贺兰县| 中方县| 宜兰县| 弋阳县| 武冈市| 米脂县| 蒲城县| 越西县| 常德市| 鹿泉市| 台南县| 绿春县| 舞阳县| 沧源| 凤凰县| 台中县| 内黄县| 白河县| 涡阳县| 吐鲁番市| 六盘水市| 宝山区| 康定县| 周至县| 西乌珠穆沁旗| 尖扎县| 泽库县| 临漳县| 密山市| 安乡县| 天柱县| 那坡县| 商南县| 华蓥市| 长寿区| 云阳县| 莱阳市| 高碑店市| 林甸县| 二手房|