<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-42  評論-42  文章-0  trackbacks-0

    我的評論

    re: 安eclipse用到的環境變量JAVA_HOME和PATH BlueSunshine 2010-03-10 08:31  
    因為有了 tomcat 所以 eclipse 知道了 localhost 可以用。
    re: 安eclipse用到的環境變量JAVA_HOME和PATH BlueSunshine 2010-03-10 08:29  
    如果在安裝 eclipse 時沒有裝 tomcat ,可以再 project 里面直接引用 tomcat ,就是加入 tomcat 的包。不然就會發現 servlet 這類文件全部紅了。
    re: 生日菜譜 BlueSunshine 2009-09-15 13:27  
    呵呵,得吃一天
    回復一下
    re: 生成 Excel文件 BlueSunshine 2008-08-04 22:24  
    做了個練習:

     1 package all;
     2 
     3 import java.io.FileOutputStream;
     4 
     5 import org.apache.poi.hssf.usermodel.HSSFFont;
     6 import org.apache.poi.hssf.usermodel.HSSFRichTextString;
     7 import org.apache.poi.hssf.usermodel.HSSFRow;
     8 import org.apache.poi.hssf.usermodel.HSSFSheet;
     9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    10 
    11 public class CreateExcel {
    12     public static void main(String[] args) {
    13         try {
    14             HSSFWorkbook workbook = new HSSFWorkbook();
    15             HSSFSheet sheet = workbook.createSheet("mySheet1");
    16 
    17             HSSFRow row0 = sheet.createRow(0);
    18             HSSFRichTextString arg0 = new HSSFRichTextString("number");
    19             HSSFFont font = workbook.createFont();
    20             font.setColor(HSSFFont.COLOR_RED);
    21             // bold : 粗體
    22             font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    23             // 字號
    24             font.setFontHeightInPoints((short18);
    25             arg0.applyFont(font);
    26 
    27             row0.createCell((short0).setCellValue(arg0);
    28             row0.createCell((short1).setCellValue("name");
    29             row0.createCell((short2).setCellValue("content");
    30 
    31             HSSFRow row1 = sheet.createRow(1);
    32             row1.createCell((short0).setCellValue("1");
    33             row1.createCell((short1).setCellValue("one");
    34             row1.createCell((short2).setCellValue("This is one.");
    35 
    36             HSSFRow row2 = sheet.createRow(2);
    37             row2.createCell((short0).setCellValue("2");
    38             row2.createCell((short1).setCellValue("two");
    39             row2.createCell((short2).setCellValue("This 是 two.");
    40 
    41             HSSFRow row3 = sheet.createRow(3);
    42             row3.createCell((short0).setCellValue("3");
    43             row3.createCell((short1).setCellValue("哈哈");
    44             row3.createCell((short2).setCellValue("哈哈是pig。");
    45 
    46             FileOutputStream fileOutputStream = new FileOutputStream("E:\\myExcel1.xls");
    47             workbook.write(fileOutputStream);
    48             fileOutputStream.flush();
    49             fileOutputStream.close();
    50             System.out.println("ok");
    51         } catch (Exception e) {
    52             System.out.println("no create" + e);
    53         }
    54     }
    55 }
    56 

    HSSFCell 的 sellCellValue(Stirng value) 方法不提倡使用,所以根據 API 改用sellCellValue(HSSFRiceTextString value)方法。第二個方法具體用法見上例18-27行。

    建出的Excel文件:


      如果要創建的Excel文檔已存在,那么將修改當前的Excel文檔。
    re: 學習集合與泛型 BlueSunshine 2008-07-10 21:50  
    五 泛型

    1,泛型中的‘萬用字符’:

    <T extends  Comparable> :表示T是實現了Comparable的類型(在‘泛型’中extends表示extends或者implement)

    <? extends T> :表示必須是T或者T的父型

    ArrayList<? extends Animal> :以實現或繼承Animal的類型為元素類型的ArrayList

    2,相同功能的另一種語法:

    public <T extends Animal> void takeThing(ArrayList<T> list);

    等同于:public void takeThing(ArrayList<? extends Animal> list);
    re: 學習集合與泛型 BlueSunshine 2008-07-10 12:07  
    四 使用TreeSet

      防止重復又保持有序,可以用TreeSet。

    例3-關于TreeSet 的例子,通過實現Comparator來達到排序。

    package collection;
     
    2 
     
    3 import java.util.Comparator;
     
    4 import java.util.TreeSet;
     
    5 
     
    6 public class TestTree {
     
    7     public static void main(String[] args) {
     
    8         new TestTree().go();
     
    9     }
    10 
    11     private void go() {
    12         Book b1 = new Book("How Cats Work");
    13         Book b2 = new Book("Remix you body");
    14         Book b3 = new Book("Finding Emo");
    15 
    16         SetComparator sc = new SetComparator();
    17         TreeSet<Book> tree = new TreeSet<Book>(sc);
    18 
    19         tree.add(b1);
    20         tree.add(b2);
    21         tree.add(b3);
    22         tree.add(b3);
    23         System.out.println(tree);
    24     }
    25 
    26     class SetComparator implements Comparator<Book> {
    27
     
    28
             @Override
    29         public int
     compare(Book o1, Book o2) {
    30             return
     o1.title.compareTo(o2.title);
    31
             }
    32
     
    33     }
    34 }
    35 
    36 
    37 package collection;
    38 
    39 public class Book {
    40     String title;
    41 
    42     public Book(String t) {
    43         title = t;
    44     }
    45 
    46 
    47     @Override
    48     public String toString() {
    49         return title;
    50     }
    51     
    52 }
    53 

      
    例4-關于TreeSet的第2個例子,通過實現Comparable來達到排序

     1 package collection;
     2 
     3 import java.util.TreeSet;
     4 
     5 public class TestTree {
     6     public static void main(String[] args) {
     7         new TestTree().go();
     8     }
     9 
    10     private void go() {
    11         Book b1 = new Book("How Cats Work");
    12         Book b2 = new Book("Remix you body");
    13         Book b3 = new Book("Finding Emo");
    14 
    15         TreeSet<Book> tree = new TreeSet<Book>();
    16 
    17         tree.add(b1);
    18         tree.add(b2);
    19         tree.add(b3);
    20         tree.add(b3);
    21         System.out.println(tree);
    22     }
    23 
    24 }
    25 
    26 package collection;
    27 
    28 
    29 public class Book implements Comparable<Book> {
    30     String title;
    31 
    32     public Book(String t) {
    33         title = t;
    34     }
    35 
    36     @Override
    37     public int compareTo(Book o) {
    38         return title.compareTo(o.title);
    39     }
    40 
    41     @Override
    42     public String toString() {
    43         return title;
    44     }
    45 
    46 }



      TreeSet的排序功能也是通過實現Comparator或Comparable來完成的。要么是TreeSet集合中的元素實現了Comparable,要么是用重載的Comparator作為參數來創建TreeSet。


    re: 建 English 項目遇到的問題 BlueSunshine 2008-06-26 22:36  
    基本功能補充:

    1 單詞表的分頁;
    2 insert / update 后的定位;
    3 index 頁的動態截選(最后做)
    re: 學習JSP(二)--JSP BlueSunshine 2008-06-25 18:16  
    二 JSP的內建對象

    ① out - javax.servlet.jsp.jspWriter
       out對象用于把結果輸出到網頁上。

    方法:
    1. void clear() ;
       清除輸出緩沖區的內容,但是不輸出到客戶端。

    2. void clearBuffer() ;
       清除輸出緩沖區的內容,并輸出到客戶端。

    3. void close() ;
       關閉輸出流,清除所有內容。

    4. void flush() ;
       輸出緩沖區里面的數據。

    5. int getBufferSize() ;
       獲取以kb為單位的目前緩沖區大小。

    6. int getRemaining() ;
       獲取以kb為單位的緩沖區中未被占用的空間大小。

    7. boolean isAutoFlush() ;
       是否自動刷新緩沖區。

    8. void newLine() ;
       輸出一個換行字符。

    9. void print( boolean b ) ;
       void print( char c ) ;
       void print( char[] s ) ;
       void print( double d ) ;
       void print( float f ) ;
       void print( int i ) ;
       void print( long l ) ;
       void print( Object obj ) ;
       void print( String s ) ;
       將指定類型的數據輸出到Http流,不換行。

    10. void println( boolean b ) ;
        void println( char c ) ;
        void println( char[] s ) ;
        void println( double d ) ;
        void println( float f ) ;
        void println( int i ) ;
        void println( long l ) ;
        void println( Object obj ) ;
        void println( String s ) ;
        將指定類型的數據輸出到Http流,并輸出一個換行符。
       
    11. Appendable append( char c ) ;
        Appendable append( CharSequence cxq, int start, int end ) ;
        Appendable append( CharSequence cxq ) ;
        將一個字符或者實現了CharSequence接口的對象添加到輸出流的后面。

    成員:
    int DEFAULT_BUFFER = 0    - 缺省緩沖區大小
    int NO_BUFFER = -1        - writer是否處于緩沖輸出狀態
    int UNBOUNDED_BUFFER = -2 - 是否限制緩沖區大小


    ② request - javax.servlet.http.HttpServletRequest
       request對象包含所有請求的信息,如請求的來源、標頭、cookies和請求相關的參數值等。

    方法:
    1. Object getAttribute( String name ) ;
       返回由name指定的屬性值,該屬性不存在時返回null。

    2. Enumeration getAttributeNames() ;
       返回request對象的所有屬性名稱的集合。

    3. String getAuthType() ;
       返回用來保護servlet的認證方法的名稱,未受保護時返回null。

    4. String getCharacterEncoding() ;
       返回請求中的字符編碼方法,可以在response對象中設置。

    5. int getContentLength() ;
       返回請求的BODY的長度,不能確定長度時返回-1。可以在response中設置。

    6. String getContentType() ;
       返回在response中定義的內容類型。

    7. String getContentPath() ;
       返回請求的路徑。

    8. Cookie[] getCookies() ;
       返回客戶端所有的Cookie的數組。

    9. Enumeration getHeaderNames() ;
       返回所有HTTP頭的名稱的集合。

    10. Enumeration getHeaders( String name ) ;
        返回指定HTTP頭的所有值的集合。

    11. String getHeader( String name ) ;
        返回指定名稱的HTTP頭的信息。

    12. long getDateHeader( String name ) ;
        返回指定名稱的Data類型的HTTP頭的信息。

    13. int getIntHeader( String name ) ;
        返回指定名稱的Int類型的HTTP頭的信息。

    14. ServletInputStream getInputStream() ;
        返回請求的輸入流。

    15. Locale getLocale() ;
        返回當前頁的Locale對象,可以在response中設定。

    16. Enumeration getLocales() ;
        返回請求中所有的Locale對象的集合。

    17. String getLocalName() ;
        獲取響應請求的服務器端主機名。

    18. String getLocalAddr() ;
        獲取響應請求的服務器端地址。

    19. int getLocalPort() ;
        獲取響應請求的服務器端端口

    20. String getMethod() ;
        獲取客戶端向服務器端發送請求的方法(GET、POST)。

    21. String getParameter( String name ) ;
        獲取客戶端發送給服務器端的參數值。

    22. Map getParameterMap() ;
        該方法返回包含請求中所有參數的一個Map對象。

    23. Enumeration getParameterNames() ;
        返回請求中所有參數的集合。

    24. String[] getParameterValues( String name ) ;
        獲得請求中指定參數的所有值。

    25. String getQueryString() ;
        返回get方法傳遞的參數字符串,該方法不分解出單獨的參數。

    26. String getPathInfo() ;
        取出請求中處于ServletPath和QueryString之間的額外信息。

    27. String getPathTranslated() ;
        返回用getPathInfo()方法取得的路徑信息的實際路徑。

    28. String getProtocol() ;
        返回請求使用的協議。可以是HTTP1.1或者HTTP1.0。

    29. BufferedReader getReader() ;
        返回請求的輸入流對應的Reader對象,該方法和getInputStream()方法在一個頁面中只能調用一個。

    30. String getRemoteAddr() ;
        獲取發出請求的客戶端IP地址。

    31. String getRemoteHost() ;
        獲取發出請求的客戶端主機名

    32. String getRemoteUser() ;
        返回經過客戶端驗證的用戶名,未經驗證返回null。

    33. int getRemotePort() ;
        返回發出請求的客戶端主機端口。

    34. String getRealPath( String path ) ;
        返回給定虛擬路徑的物理路徑。

    35. RequestDispatcher getRequestDispatcher( String path ) ;
        按給定的路徑生成資源轉向處理適配器對象。

    36. String getRequestedSessionId() ;
        返回請求的session的標識。

    37. String RequestURI() ;
        返回發出請求的客戶端地址,但是不包括請求的參數字符串。

    38. StringBuffer getRequestURI() ;
        返回響應請求的服務器端地址

    39. String getScheme() ;
        獲取協議名稱,缺省值為HTTP協議。

    40. String getServerName() ;
        返回響應請求的服務器名稱。

    41. String getServletPath() ;
        獲取客戶端所請求的腳本文件的文件路徑。

    42. int getServerPort() ;
        獲取響應請求的服務器端主機端口號。

    43. void removeAttribute( String name ) ;
        在屬性列表中刪除指定名稱的屬性。

    44. void setAttribute( String name, Object value ) ;
        在屬性列表中添加/刪除指定的屬性。

    45. void setCharacterEncoding( String name ) ;
        設置請求的字符編碼格式。

    46. HttpSession getSession() ;
        HttpSession getSession( boolean create ) ;
        獲取session,如果create為true,在無session的情況下創建一個。
       
    47. boolean isRequestedSessionIdFromCookie() ;
        檢查請求的會話ID是否為通過Cookie傳入。

    48. boolean isRequestedSessionIdFromURL() ;
        檢查請求的會話ID是否為通過URL傳入。

    49. boolean isRequestedSessionIdValid() ;
        檢查請求的會話ID是否仍然有效。

    50. boolean isSecure() ;
        檢查請求是否使用安全鏈接,如果HTTPS等。

    51. boolean isUserInRole( String role ) ;
        檢查已經通過驗證的用戶是否在是role所指定的角色。

    52. Principal getUserPrincipal() ;
        返回包含用戶登陸名的一個java.security.Principal對象。

    成員:
    String BASIC_AUTH = "BASIC"             -
    String CLIENT_CERT_AUTH = "CLIENT_CERT" -
    String DIGEST_AUTH = "DIGEST"           -
    String FORM_AUTH = "FORM"               -


    ③ response - javax.servlet.http.HttpServletResponse
       response對象主要將JSP容器處理后的結果傳回到客戶端。

    方法:
    1. void addCookie( Cookie cookie ) ;
       添加一個Cookie對象,保存客戶端信息。

    2. void addDateHeader( String name, long value ) ;
       添加一個日期類型的HTTP頭信息,覆蓋同名的HTTP頭信息。

    3. void addHeader( String name, String value ) ;
       添加一個HTTP頭,覆蓋同名的舊HTTP頭。

    4. void addIntHeader( String name, int value ) ;
       添加一個整型的HTTP頭,覆蓋同名的舊HTTP頭。

    5. boolean containsHeader( String name ) ;
       判斷指定的HTTP頭是否存在。

    6. String encodeRedirectURL( String url ) ;
       對sendRedirect()方法使用的URL進行編碼。

    7. String encodeURL( String url ) ;
       將URL予以編碼,回傳包含session ID的URL。
      
    8. void flushBuffer() ;
       強制把當前緩沖區的內容發送到客戶端。

    9. int getBufferSize() ;
       取得以kb為單位的緩沖區大小。

    10. String getCharacterEncoding() ;
        獲取響應的字符編碼格式。

    11. String getContentType() ;
        獲取響應的類型。

    12. Locale getLocale() ;
        獲取響應的Locale對象。

    13. ServletOutputStream getOutputStream() ;
        返回客戶端的輸出流對象。

    14. PrintWriter getWriter() ;
        獲取輸出流對應的writer對象。

    15. boolean isCommitted() ;
        判斷服務器端是否已經將數據輸出到客戶端。

    16. void reset() ;
        清空buffer中的所有內容。

    17. void resetBuffer() ;
        情況buffer中所有的內容,但是保留HTTP頭和狀態信息。

    18. void sendError( int xc, String msg ) ;
        void sendError( int xc ) ;
        發送錯誤,包括狀態碼和錯誤信息。

    19. void sendRedirect( String locationg ) ;
        把響應發送到另外一個位置進行處理。

    20. void setBufferSize( int size ) ;
        設置以kb為單位的緩沖區大小。

    21. void setCharacterEncoding( String charset ) ;
        設置響應使用的字符編碼格式。

    22. void setContentLength( int length ) ;
        設置響應的BODY長度。

    23. void setContentType( String type ) ;
        設置響應的類型。

    24. void setDateHeader( String name, long value ) ;
        設置指定名稱的Data類型的HTTP頭的值。

    25. void setHeader( String name, String value ) ;
        設置指定名稱的HTTP頭的值。

    26. void setIntHeader( String name, int value ) ;
        設置指定名稱的int類型的HTTP頭的值。

    27. void setStatus( int xc ) ;
        設置響應狀態碼,新值會覆蓋當前值。

    成員(HTTP狀態碼):
    int SC_CONTINUE = 100                      int SC_SWITCHING_PROTOCOLS = 101
    int SC_OK = 200                            int SC_NON_AUTHORITATIVE_INFORMATION = 203
    int SC_ACCEPTED = 202                      int SC_CREATED = 201
    int SC_NO_CONTENT = 204                    int SC_RESET_CONTENT = 205
    int SC_PARTIAL_CONTENT = 206               int SC_MULTIPLE_CHOICES = 300
    int SC_MOVED_PERMANENTLY = 301             int SC_MOVED_TEMPORARILY = 302
    int SC_FOUND = 302                         int SC_SEE_OTHER = 303
    int SC_NOT_MODIFIED = 304                  int SC_USE_PROXY = 305
    int SC_TEMPORARY_REDIRECT = 307            int SC_BAD_REQUEST = 400
    int SC_UNAUTHORIZED = 401                  int SC_PAYMENT_REQUIRED = 402
    int SC_FORBIDDEN = 403                     int SC_NOT_FOUND = 404
    int SC_METHOD_NOT_ALLOWED = 405            int SC_NOT_ACCEPTABLE = 406
    int SC_PROXY_AUTHENTICATION_REQUIRED = 407 int SC_REQUEST_TIMEOUT = 408
    int SC_CONFLICT = 409                      int SC_GONE = 410
    int SC_LENGTH_REQUIRED = 411               int SC_PRECONDITION_FAILED = 412
    int SC_REQUEST_ENTITY_TOO_LARGE = 413      int SC_REQUEST_URI_TOO_LONG = 414
    int SC_UNSUPPORTED_MEDIA_TYPE = 415        int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416
    int SC_EXPECTATION_FAILED = 417            int SC_INTERNAL_SERVER_ERROR = 500
    int SC_NOT_IMPLEMENTED = 501               int SC_BAD_GATEWAY = 502
    int SC_SERVICE_UNAVAILABLE = 503           int SC_GATEWAY_TIMEOUT = 504
    int SC_HTTP_VERSION_NOT_SUPPORTED = 505


    ④ session - javax.servlet.http.HttpSession
       session對象表示目前個別用戶的會話狀態,用來識別每個用戶。

    方法:
    1. Object getAttribute( String name ) ;
       獲取與指定名字相關聯的session屬性值。

    2. Enumeration getAttributeNames() ;
       取得session內所有屬性的集合。

    3. long getCreationTime() ;
       返回session的創建時間,最小單位千分之一秒。

    4. String getId() ;
       取得session標識。

    5. long getLastAccessedTime() ;
       返回與當前session相關的客戶端最后一次訪問的時間,由1970-01-01算起,單位毫秒。

    6. int getMaxInactiveInterval( int interval ) ;
       返回總時間,以秒為單位,表示session的有效時間(session不活動時間)。-1為永不過期。

    7. ServletContext getServletContext() ;
       返回一個該JSP頁面對應的ServletContext對象實例。

    8. HttpSessionContext getSessionContext() ;
      

    9. Object getValue( String name ) ;
       取得指定名稱的session變量值,不推薦使用。

    10. String[] getValueNames() ;
        取得所有session變量的名稱的集合,不推薦使用。

    11. void invalidate() ;
        銷毀這個session對象。

    12. boolean isNew() ;
        判斷一個session是否由服務器產生,但是客戶端并沒有使用。

    13. void pubValue( String name, Object value ) ;
        添加一個session變量,不推薦使用。

    14. void removeValue( String name ) ;
        移除一個session變量的值,不推薦使用。

    15. void setAttribute( String name, String value ) ;
        設置指定名稱的session屬性值。

    16. void setMaxInactiveInterval( int interval ) ;
        設置session的有效期。

    17. void removeAttribute( String name ) ;
        移除指定名稱的session屬性。


    ⑤ pageContext - javax.servlet.jsp.PageContext
       pageContext對象存儲本JSP頁面相關信息,如屬性、內建對象等。

    方法:
    1. void setAttribute( String name, Object value, int scope ) ;
       void setAttribute( String name, Object value ) ;
       在指定的共享范圍內設置屬性。

    2. Object getAttribute( String name, int scope ) ;
       Object getAttribute( String name ) ;
       取得指定共享范圍內以name為名字的屬性值。

    3. Object findAttribute( String name ) ;
       按頁面、請求、會話和應用程序共享范圍搜索已命名的屬性。

    4. void removeAttribute( String name, int scope ) ;
       void removeAttribute( String name ) ;
       移除指定名稱和共享范圍的屬性。

    5. void forward( String url ) ;
       將頁面導航到指定的URL。

    6. Enumeration getAttributeNamesScope( int scope ) ;
       取得指定共享范圍內的所有屬性名稱的集合。

    7. int getAttributeScope( String name ) ;
       取得指定屬性的共享范圍。

    8. ErrorData getErrorDate() ;
       取得頁面的errorData對象。

    9. Exception getException() ;
       取得頁面的exception對象。

    10. ExpressionEvaluator getExpressionEvaluator() ;
        取得頁面的expressionEvaluator對象。

    11. JspWriter getOut() ;
        取得頁面的out對象。

    12. Object getPage() ;
        取得頁面的page對象。

    13. ServletRequest getRequest() ;
        取得頁面的request對象。

    14. ServletResponse getResponse() ;
        取得頁面的response對象。

    15. ServletConfig getConfig() ;
        取得頁面的config對象。

    16. ServletContext getServletContext() ;
        取得頁面的servletContext對象。

    17. HttpSession getSession() ;
        取得頁面的session對象。

    18. VariableResolver getVariableResolver() ;
        取得頁面的variableResolver對象。

    19. void include( String url, boolean flush ) ;
        void include( String url ) ;
        包含其他的資源,并指定是否自動刷新。

    20. void release() ;
        重置pageContext內部狀態,釋放所有內部引用。

    21. void initialize( Servlet servlet, ServletRequest request, ServletResponse response,
                         String errorPageURL, boolean needSession, int bufferSize, boolean autoFlush ) ;
        初始化未經初始化的pageContext對象。

    22. BodyContext pushBody() ;
        BodyContext pushBody( Writer writer ) ;
        保存當前的out對象,并更新pageContext中page范圍內的out對象。

    23. JspWrite popBody() ;
        取出由pushBody()方法保存的out對象。

    24. void handlePageException( Exception e ) ;
        void handlePageException( Thrwoable t ) ;
       

    成員:
    int PAGE_SCOPE = 1        - 頁面共享范圍
    int REQUEST_SCOPE = 2     - 請求共享范圍
    int SESSION_SCOPE = 3     - 會話共享范圍
    int APPLICATION_SCOPE = 4 - 應用程序共享范圍
    String PAGE = "javax.servlet.jsp.jspPage"
    String PAGECONTEXT = "javax.servlet.jsp.jspPageContext"
    String REQUEST = "javax.servlet.jsp.jspRequest"
    String RESPONSE = "javax.servlet.jsp.jspResponse"
    String CONFIG = "javax.servlet.jsp.jspConfig"
    String SESSION = "javax.servlet.jsp.jspSession"
    String OUT = "javax.servlet.jsp.jspOut"
    String APPLICATION = "javax.servlet.jsp.jspApplication"
    String EXCEPTION = "javax.servlet.jsp.jspException"


    ⑥ application - javax.servlet.ServletContext
       application主要功用在于取得或更改Servlet的設定。

    方法:
    1. Object getAttribute( String name ) ;
       返回由name指定的application屬性。

    2. Enumeration getAttributes() ;
       返回所有的application屬性。

    3. ServletContext getContext( String uripath ) ;
       取得當前應用的ServletContext對象。

    4. String getInitParameter( String name ) ;
       返回由name指定的application屬性的初始值。

    5. Enumeration getInitParameters() ;
       返回所有的application屬性的初始值的集合。

    6. int getMajorVersion() ;
       返回servlet容器支持的Servlet API的版本號。

    7. String getMimeType( String file ) ;
       返回指定文件的類型,未知類型返回null。一般為"text/html"和"image/gif"。

    8. int getMinorVersion() ;
       返回servlet容器支持的Servlet API的副版本號。

    9. String getRealPath( String path ) ;
       返回給定虛擬路徑所對應物理路徑。

    10. RequestDispatcher getNamedDispatcher( String name ) ;
        為指定名字的Servlet對象返回一個RequestDispatcher對象的實例。

    11. RequestDispatcher getRequestDispatcher( String path ) ;
        返回一個RequestDispatcher對象的實例。

    12. URL getResource( String path ) ;
        返回指定的資源路徑對應的一個URL對象實例,參數要以"/"開頭。

    13. InputStream getResourceAsStream( String path ) ;
        返回一個由path指定位置的資源的InputStream對象實例。

    14. Set getResourcePaths( String path ) ;
        返回存儲在web-app中所有資源路徑的集合。

    15. String getServerInfo() ;
        取得應用服務器版本信息。

    16. Servlet getServlet( String name ) ;
        在ServletContext中檢索指定名稱的servlet。

    17. Enumeration getServlets() ;
        返回ServletContext中所有servlet的集合。

    18. String getServletContextName() ;
        返回本web應用的名稱。

    19. Enumeration getServletContextNames() ;
        返回ServletContext中所有servlet的名稱集合。

    20. void log( Exception ex, String msg ) ;
        void log( String msg, Throwable t ) ;
        void log( String msg ) ;
        把指定的信息寫入servlet log文件。

    21. void removeAttribute( String name ) ;
        移除指定名稱的application屬性。

    22. void setAttribute( String name, Object value ) ;
        設定指定的application屬性的值。


    ⑦ config - javax.servlet.ServletConfig
       config對象用來存放Servlet初始的數據結構。

    方法:
    1. String getInitParameter( String name ) ;
       返回名稱為name的促使參數的值。

    2. Enumeration getInitParameters() ;
       返回這個JSP所有的促使參數的名稱集合。

    3. ServletContext getContext() ;
       返回執行者的servlet上下文。

    4. String getServletName() ;
       返回servlet的名稱。


    ⑧ exception - java.lang.Throwable
       錯誤對象,只有在JSP頁面的page指令中指定isErrorPage="true"后,才可以在本頁面使用exception對象。

    方法:
    1. Throwable fillInStackTrace() ;
       將當前stack信息記錄到exception對象中。

    2. String getLocalizedMessage() ;
       取得本地語系的錯誤提示信息。

    3. String getMessage()
       取得錯誤提示信息。

    4. StackTrackElement[] getStackTrace() ;
       返回對象中記錄的call stack track信息。

    5. Throwable initCause( Throwable cause ) ;
       將另外一個異常對象嵌套進當前異常對象中。
      
    6. Throwable getCause() ;
       取出嵌套在當前異常對象中的異常。

    7. void printStackTrace() ;
       void printStackTrace( printStream s ) ;
       void printStackTrace( printWriter s ) ;
       打印出Throwable及其call stack trace信息。

    8. void setStackTrace( StackTraceElement[] stackTrace )
       設置對象的call stack trace信息。


    ⑨ page - javax.servlet.jsp.HttpJspPage
       page對象代表JSP對象本身,或者說代表編譯后的servlet對象,
       可以用( (javax.servlet.jsp.HttpJspPage)page )來取用它的方法和屬性。


    re: 學習 JSP--Servlet BlueSunshine 2008-06-25 14:51  

    六 Http的一個會話對象Session

    public class SomeServlet extends HttpServlet {
        @Override
        
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            HttpSession session 
    = req.getSession();
            session.setAttribute(
    "name""chh");
        }

    }
    re: 學習 JSP--Servlet BlueSunshine 2008-06-25 14:45  
    五 Servlet的service方法

      service()可以涵蓋doGet()和doPost()。

    public class SomeServlet extends HttpServlet {
        @Override
        
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            PrintWriter out 
    = resp.getWriter();
        }

    }

     
    這樣寫,就可以不用再寫doGet()和doPost(),因為service()可以處理get請求和post請求。
    re: 學習 JSP--基礎篇 BlueSunshine 2008-06-25 12:51  

    四 處理表單數據

      Java Servlet的好處之一,只需要簡單地調用一下HttpServletRequest的getParameter方法、在調用參數中提供表單變量的名字(大小寫敏感)即可,而且GET請求和POST請求的處理方法完全相同。

       getParameter方法的返回值是一個字符串,它是參數中指定的變量名字第一次出現所對應的值經反編碼得到得字符串(可以直接使用)。如果指定的表單變量存在,但沒有值,getParameter返回空字符串;如果指定的表單變量不存在,則返回null。如果表單變量可能對應多個值,可以用getParameterValues來取代getParameter。getParameterValues能夠返回一個字符串數組。

       最后,雖然在實際應用中Servlet很可能只會用到那些已知名字的表單變量,但在調試環境中,獲得完整的表單變量名字列表往往是很有用的,利用getParamerterNames方法可以方便地實現這一點。getParamerterNames返回的是一個Enumeration,其中的每一項都可以轉換為調用getParameter的字符串。

    re: 學習 JSP BlueSunshine 2008-06-24 17:33  
    二 支持Servlet的Web服務器--tomcat

    三 一個簡單Servlet的基本結構

    package servlet;

    import
     java.io.IOException;
    import
     java.io.PrintWriter;

    import
     javax.servlet.http.HttpServlet;
    import
     javax.servlet.http.HttpServletRequest;
    import
     javax.servlet.http.HttpServletResponse;

    public class SomeServlet extends HttpServlet 
    {
        
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException 
    {
            PrintWriter out 
    =
     resp.getWriter();
        }

    }


       如果某個類要成為Servlet,則它應該從HttpServlet 繼承,根據數據是通過GET還是POST發送,覆蓋doGet、doPost方法之一或全部。doGet和doPost方法都有兩個參數,分別為HttpServletRequest 類型和HttpServletResponse 類型。HttpServletRequest提供訪問有關請求的信息的方法,例如表單數據、HTTP請求頭等等。HttpServletResponse除了提供用于指定HTTP應答狀態(200,404等)、應答頭(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一個用于向客戶端發送數據的PrintWriter 。對于簡單的Servlet來說,它的大部分工作是通過println語句生成向客戶端發送的頁面。

       注意doGet和doPost拋出兩個異常,因此你必須在聲明中包含它們。另外,你還必須導入java.io包(要用到PrintWriter等類)、javax.servlet包(要用到HttpServlet等類)以及javax.servlet.http包(要用到HttpServletRequest類和HttpServletResponse類)。

        最后,doGet和doPost這兩個方法是由service方法調用的,有時你可能需要直接覆蓋service方法,比如Servlet要處理GET和POST兩種請求時。
    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-23 23:49  

    @BeforeClass/@AfterClass 與 @Before/@After 的區別

    @BeforeClass/@AfterClass

    只運行一次;
    方法名不限制;
    public static;

    @Before/@After

    在每個測試方法前(后)都會運行一次;
    方法名不限制;
    public 非static。

    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-22 21:18  

    CGI

    CGI 意思為 Common Gateway Interface(公共網關接口), 一種基于瀏覽器的輸入、在Web服務器上運行的程序方法. CGI腳本 使你的瀏覽器與用戶能交互,為了在數據庫中尋找一個名詞, 提供你寫入的評論,或者從一個表單中選擇幾個條目并且能得到一個明確的回答. 如果你曾經遇到過在web上填表或進行搜索, 你就是用的CGI腳本. 你那時也許沒有意識到,因為大部分工作是在服務器上運行的,你看到的只是結果.

    CGI腳本簡單地講是個運行在Web服務器上的程序, 有瀏覽器的輸入觸發. 這個腳本通常象服務器和系統中其他程序如數據庫的橋梁。

    re: 面試題 BlueSunshine 2008-06-18 22:27  
    1 替換
    2 編碼轉換
    3 一個RuntimeException例子
    re: 面試題 BlueSunshine 2008-06-18 13:16  
    Servlet
     
      Servlet是使用Java Servlet 應用程序設計接口(API)及相關類和方法的 Java 程序。除了 Java Servlet API,Servlet 還可以使用用以擴展和添加到 API 的 Java 類軟件包。Servlet 在啟用 Java 的 Web 服務器上或應用服務器上運行并擴展了該服務器的能力。Java servlet對于Web服務器就好象Java applet對于Web瀏覽器。Servlet裝入Web服務器并在Web服務器內執行,而applet裝入Web瀏覽器并在Web瀏覽器內執行。Java Servlet API 定義了一個servlet 和Java使能的服務器之間的一個標準接口,這使得Servlets具有跨服務器平臺的特性。
      Servlet 通過創建一個框架來擴展服務器的能力,以提供在 Web 上進行請求和響應服務。當客戶機發送請求至服務器時,服務器可以將請求信息發送給 Servlet,并讓 Servlet 建立起服務器返回給客戶機的響應。 當啟動 Web 服務器或客戶機第一次請求服務時,可以自動裝入 Servlet。裝入后, Servlet 繼續運行直到其它客戶機發出請求。Servlet 的功能涉及范圍很廣。例如,Servlet 可完成如下功能:

     

    (1) 創建并返回一個包含基于客戶請求性質的動態內容的完整的 HTML頁面。

    (2) 創建可嵌入到現有 HTML 頁面中的一部分 HTML 頁面(HTML 片段)。

    (3) 與其它服務器資源(包括數據庫和基于 Java 的應用程序)進行通信。

    (4) 用多個客戶機處理連接,接收多個客戶機的輸入,并將結果廣播到多個客戶機上。例如,Servlet 可
    以是多參與者的游戲服務器。

    (5) 當允許在單連接方式下傳送數據的情況下,在瀏覽器上打開服務器至applet的新連接,并將該連
    接保持在打開狀態。當允許客戶機和服務器簡單、高效地執行會話的情況下,applet也可以啟動客戶瀏覽器和服務器之間的連接??梢酝ㄟ^定制協議或標準(如 IIOP)進行通信。

    (6) 對特殊的處理采用 MIME 類型過濾數據,例如圖像轉換和服務器端包括(SSI)。

    (7) 將定制的處理提供給所有服務器的標準例行程序。例如,Servlet 可以修改如何認證用戶。

    Servlet 的生命周期

      Servlet 的生命周期始于將它裝入 Web 服務器的內存時,并在終止或重新裝入 Servlet 時結束。

    (1) 初始化
    在下列時刻裝入 Servlet:
    =如果已配置自動裝入選項,則在啟動服務器時自動裝入
    =在服務器啟動后,客戶機首次向 Servlet 發出請求時
    =重新裝入 Servlet 時
    裝入 Servlet 后,服務器創建一個 Servlet 實例并且調用 Servlet 的 init() 方法。在初始化階段,Servlet 初始化參數被傳遞給 Servlet 配置對象。

    (2) 請求處理
    對于到達服務器的客戶機請求,服務器創建特定于請求的一個"請求"對象和一個"響應"對象。服務器調用 Servlet 的 service() 方法,該方法用于傳遞"請求"和"響應"對象。service() 方法從"請求"對象獲得請求信息、處理該請求并用"響應"對象的方法以將響應傳回客戶機。service() 方法可以調用其它方法來處理請求,例如 doGet()、doPost() 或其它的方法。

    (3) 終止
    當服務器不再需要 Servlet, 或重新裝入 Servlet 的新實例時,服務器會調用 Servlet 的 destroy() 方法。

    re: 面試題 BlueSunshine 2008-06-18 13:06  
    JVM
     
    Java Virtual Machine(Java虛擬機),它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java虛擬機有自己完善的硬件架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,實際上最終還是把字節碼解釋成具體平臺上的機器指令執行。
    re: 面試題 BlueSunshine 2008-06-18 12:51  
    session 與cookie 的區別
     
      Session是由應用服務器維持的一個服務器端的存儲空間,Cookie是客戶端的存儲空間,由瀏覽器來維持。用戶在連接服務器時,會由服務器生成一個唯一的SessionID,用該SessionID 為標識符來存取服務器端的Session存儲空間。而SessionID這一數據則是保存到客戶端,用Cookie保存的,用戶提交頁面時,會將這一 SessionID提交到服務器端,來存取Session數據。
     
      
      服務器也可以通過URL重寫的方式來傳遞SessionID的值,因此不是完全依賴Cookie。如果客戶端Cookie禁用,則服務器可以自動通過重寫URL的方式來保存Session的值,并且這個過程對程序員透明??梢栽囈幌拢词共粚慍ookie,在使用request.getCookies();取出的Cookie數組的長度也是1,而這個Cookie的名字就是JSESSIONID,還有一個很長的二進制的字符串,是SessionID的值。

    re: 面試題 BlueSunshine 2008-06-18 12:41  
    HashMap和Hashtable的區別
     
      Hashtable繼承自Dictionary類(Dictionary類也實現了Map 接口),而HashMap是Java1.2引進的Map interface的一個實現類。他們都實現了Map接口。Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。

      區別1:HashMap允許將null作為一個entry(名值對)的key或者value,由于非線程安全,效率上可能高于Hashtable,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。

      區別2:Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
    re: 面試題 BlueSunshine 2008-06-18 12:26  
    final, finally, finalize的區別

    final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
    finally是異常處理語句結構(可選的)的一部分,表示總是執行。try{}catch(){}finally{}
    finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。
    re: 面試題 BlueSunshine 2008-06-18 12:23  
    collection 與 collections 的區別

     Collection是集合的接口(不包括 map), set 和 list 這兩個接口繼承了 collection 接口;
    Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。
    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-16 20:34  
    JDK (Java Development Kit) -java開發環境
    JDK 是整個Java的核心,包括了Java運行環境(Java Runtime Envirnment),一堆Java工具和Java基礎的類庫(rt.jar)。不論什么Java應用服務器實質都是內置了某個版本的JDK。因此掌握 JDK是學好Java的第一步。最主流的JDK是Sun公司發布的JDK,除了Sun之外,還有很多公司和組織都開發了自己的JDK,例如IBM公司開發的JDK,BEA公司的Jrocket,還有GNU組織開發的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)運行效率要比Sun JDK包含的JVM高出許多。而專門運行在x86平臺的Jrocket在服務端運行效率也要比Sun JDK好很多。但不管怎么說,我們還是需要先把Sun JDK掌握好。
    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-12 17:21  
    UML 與 Rose

    UML : 學習用書中的圖示
     標準建模語言UML的重要內容可以由下列五類圖(共9種圖形)來定義:用例圖,靜態圖 (Static diagram),行為圖(Behavior diagram),交互圖(Interactive diagram),實現圖 ( Implementation diagram )。

    Rose : 用來作UML 的工具
    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-12 16:56  
    Portal (特點:單點登錄,網頁集成)
    英文字面是“入口”,國內有叫“門戶”技術的,Portal是一個基于web的應用程序,它主要提供個性化、單點登錄、不同來源的內容整合以及存放信息系統的表示層。
    Portal有什么標準?
    為規范Portal,SUN于2003年底制定了JSR168,它定義了Portlet標準,并給出了一個實現接口。
    什么是Portlet?
    Portlet是基于java技術的web組件,它由Portlet容器管理、并處理請求,并動態生成輸出內容。Portlet是基于java的web組 件,由Portlet容器管理,并由容器處理請求,生產動態內容。Portals使用Portlets作為可插拔用戶接口組件,提供信息系統的表示層。作 為利用servlets進行web應用編程的下一步,Portlets實現了web應用的模塊化和用戶中心化。Portlet規范,即jsr(java specification request)168,是為了實現portal和Portlet的互操作。它定義了Portlet和Portlet容器之間的和約,讓Portlet實 現個性化、表示和安全的api集。規范還定義了怎樣在Portlets應用中打包Portlets。
    Portal有什么特色?
    低成本的集成技術。如果你的網站或企業已經有了很多信息系統,Portal可以很容易的將這些系統集成起來,并以統一的方式提供給用戶,統一可以有流程的 統一,如:登陸、定制、瀏覽;界面的統一,如:顯示風格登高度的模塊化。通過Portal技術提供的plugin技術,可以根據企業,網友的需求編制標準 的模塊,并嵌入Portal系統,供企業、網友使用。高度的擴展性,已經有了很多產品和標準來制定Portal,作為這些產品和標準,如:jsr- 168,通過Portlet的概念來對Portal的功能進行擴展。
    Portal有什么用?
    個人認為從兩個方面。一是針對跟人(網友)的應用。由于Portal的特色,企業和網站可以很容易的將自己的服務進行標準封裝,插入Portal系統,提 供跟用戶使用?,F在很多門戶網站和專業網站有很多服務,但是很多服務用戶根本就沒有使用過、發現過,通過Portal的形式給用戶一個集中體驗的場所。二 是針對企業,企業可以將現有的信息系統,資源通過Portal來進行封裝,提供給用戶使用。比如:有些公司有報銷系統,考核系統,會議系統,但這些系統都 是彼此分離的,使用和界面并不統一,通過Portal可以很容易地將這些系統提供的服務封裝并呈給用戶使用。
    http://hi.baidu.com/wikiweb/blog/item/82edd01329deec035aaf53b1.html
    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-12 16:40  
    CMS

    CMS是Content Management System 的簡寫
    簡單的說:CMS是一個內容管理系統

    一個內容管理系統是把一個網站的內容(文字,圖片,等等)與網站的組件分離開來,可以將各個頁面連接到一起,可以控制頁面的顯示。通過這個系統,可以方便的管理,發布,維護網站的內容,而不再需要硬性的寫HTML代碼或手工建立每一個頁面。

    內容管理系統被分離成以下幾個層面:各個層面優先考慮的需求不同

    1,后臺業務子系統管理(管理優先:內容管理):新聞錄入系統,BBS論壇子系統,全文檢索子系統等,針對不同系統的方便管理者的內容錄入:所見即所得的編輯管理界面等,清晰的業務邏輯:各種子系統的權限控制機制等;

    2,Portal系統(表現優先:模板管理):大部分最終的輸出頁面:網站首頁,子頻道/專題頁,新聞詳情頁一般就是各種后臺子系統模塊的各種組合,這種發布組合邏輯是非常豐富的,Portal系統就是負責以上這些后臺子系統的組合表現管理;

    3,前臺發布(效率優先:發布管理):面向最終用戶的緩存發布,和搜索引擎spider的URL設計等……
    re: 隨時想到的基礎知識問題 BlueSunshine 2008-06-11 18:36  

    ORM



         對象關系映射Object Relational Mapping,簡稱ORM)是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。 簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將java程序中的對象自動持久化到關系數據庫中。本質上就是將數據從一種形式轉換到另外一種形式。 這也同時暗示者額外的執行開銷;然而,如果ORM作為一種中間件實現,則會有很多機會做優化,而這些在手寫的持久層并不存在。 更重要的是用于控制轉換的元數據需要提供和管理;但是同樣,這些花費要比維護手寫的方案要少;而且就算是遵守ODMG規范的對象數據庫依然需要級別的元數據。


          對象-關系映射Object/Relation Mapping,簡稱ORM),是隨著面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關系數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關系數據是業務實體的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中,關系數據無法直接表達多對多關聯和繼承關系。因此,對象-關系映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關系數據庫數據的映射。


          面向對象是從軟件工程基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關系數據庫則是從數學理論發展而來的,兩套理論存在顯著的區別。為了解決這個不匹配的現象,對象關系映射技術應運而生。


          讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關系"(Relational)。幾乎所有的程序里面,都存在對象和關系數據庫。在業務邏輯層和用戶界面層中,我們是面向對象的。當對象信息發生變化的時候,我們需要把對象的信息保存在關系數據庫中。




    目前流行的 ORM 產品


          目前眾多廠商和開源社區都提供了持久層框架的實現,常見的有:


          Apache OJB (http://db.apache.org/ojb/)

          Cayenne (http://objectstyle.org/cayenne/)

          Jaxor (http://jaxor.sourceforge.net) 

          Hibernate (http://www.hibernate.org) 被JBoss收購

          iBatis (http://www.ibatis.com) Apache的

          jRelationalFramework (http://ijf.sourceforge.net)

          mirage (http://itor.cq2.org/en/oss/mirage/toon)

          SMYLE (http://www.drjava.de/smyle)

          TopLink (http://otn.
    oracle.com/products/ias/toplink/index.html)


          其中 TopLink 是 Oracle 的商業產品,其他均為開源項目。






    http://www.itisedu.com/phrase/200604231312115.html
    re: 隨時想到的問題 BlueSunshine 2008-06-11 18:13  
    什么是J2EE?什么是EJB?



    1 什么是J2EE?它和普通的Java有什么不同?

    答:J2EE全稱為Java2 Platform, Enterprise Edition。

    “J2EE平臺本質上是一個分布式的服務器應用程序設計環境——一個Java環境,它提供了:

    ·宿主應用的一個運行基礎框架環境。

    ·一套用來創建應用的Java擴展API。”(引自《J2EE服務器端高級編程》)



    J2EE的核心規范是 Enterprise Java Beans(EJBs)。EJB依照特性的不同,目前共分為三種,分別是Session Bean(遠程調用)、Entity Bean(實體Bean,可看作Hibernate),以及 Message Driven Bean(消息驅動Bean,接收消息再進一步干活的) 。其中 Session Bean 與Entity Bean 算是EJB的始祖,這兩種EJB規格在EJB 1.x版本推出時就已經存在,而Message Driven Bean則是出現在EJB 2.0的規格之中。



    http://zhidao.baidu.com/question/2424990.html?fr=qrl



    re: 建 English 項目遇到的問題 BlueSunshine 2008-06-10 14:57  
    11 表"word"引入 sequence   
      表"word" 的"wordId" 列是自動生成的,要用 sequence ?! ?br />   在"word" 表對應的 java 文件中,加入:
    @GeneratedValue(strategy = GenerationType.SEQUENCE)


    -------------下面是結果


    @Id
        @Column(name 
    = "WORD_ID", nullable = false, precision = 10, scale = 0)
        @GeneratedValue(strategy 
    = GenerationType.SEQUENCE)
        
    public int getWordId() {
            
    return this.wordId;
        }
    這樣就可以了
    re: 建 English 項目遇到的問題 BlueSunshine 2008-06-10 14:32  
    10 兩表關連
      第一次用兩到表的關連,在"word"表里有"userId"這一列,而這列來自表"user"。用 Hibernate 生成的兩個表對應文件和之前的不同,可能在取值的時候方便一些,還沒用到,只是想法。

      期待中......
    re: 建 English 項目遇到的問題 BlueSunshine 2008-06-10 10:23  
    8 “登錄失敗”的問題

    topLogin.jsp:(template 里的 "top" 部分)
    <%@page import="com.english.user.EnglishUser;"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

    <%
        EnglishUser englishUser 
    = (EnglishUser) session.getAttribute("englishUser");
        
    String englishUserId = "游客";
        
    if (englishUser != null)
            englishUserId 
    = englishUser.getUserid();
    %>
    <table background="img/beijing_flower.jpg" width="1024" height="228">
        
    <tr>
            
    <td>Welcome to 'Sunshine zone'!登錄身份:<%=englishUserId%></td>
        
    </tr>
        
    <c:if test="${sessionScope.englishUser!=null}">
            
    <tr>
                
    <td><href="logout.do">logout</a></td>
            
    </tr>
        
    </c:if>
    </table>

    在“登錄失敗”后 "logout" 對應的 <td> 出現在頁面上,問題出在:
    雖然 session 為 null ,但是 request 里面有 englishUser ,所以在同名的情況出錯。(為框架沖突)
    解決方法:
    <c:if test="${sessionScope.englishUser!=null}">
    給出范圍,只找session 類型的 englishUser
    re: 建 English 項目遇到的問題 BlueSunshine 2008-06-10 09:24  
    7 完成了UserController, UserDAO, UserService 及對應的靜態頁

    EnglishUserController:
    package com.english.controller;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;

    import com.english.user.EnglishUser;
    import com.english.user.EnglishUserService;
    import com.english.user.LoginException;

    @Controller
    public class EnglishUserController {
        
    //自動寫入
        @Autowired
        
    private EnglishUserService englishUserService;

        @RequestMapping(
    "/register.do")
        
    public String addEnglishUser(HttpServletRequest req, EnglishUser englishUser) {
            englishUserService.addEnglishUser(englishUser);
            req.getSession().setAttribute(
    "englishUser", englishUser);
            
    return "index";

        }


        @RequestMapping(
    "/login.do")
        
    public String loginEnglishUser(HttpSession session, EnglishUser englishUser) {
            
    try {
                EnglishUser englishUserTest 
    = englishUserService.vefifyEnglishUser(englishUser);
                session.setAttribute(
    "englishUser", englishUserTest);
                
    return "index";
            }
     catch (LoginException e) {
                
    return "loginFail";
            }

        }


        @RequestMapping(
    "/logout.do")
        
    public String logout(HttpSession session) {
            
    //session.removeAttribute("englishUser");之前寫的是這句,下面的是自己新想出來的
            session.setAttribute("englishUser"null);
            
    return "index";
        }


        
    public EnglishUserService getEnglishUserService() {
            
    return englishUserService;
        }


        
    public void setEnglishUserService(EnglishUserService englishUserService) {
            
    this.englishUserService = englishUserService;
        }

    }


    錯誤之一,沒在
    "private EnglishUserService englishUserService"前面加標注:
     @autowired
    re: 隨時想到的問題 BlueSunshine 2008-06-06 22:48  
    理解error和exception之間的區別

    exception 就是:“在程序執行中所發生的中斷了正常指令流的事件(An exception is an event that occurs during the execution of a program that disrupts the normal flow of instructions.)”
    error就是:“效果或情況背離了可接受的一般法則(The act or an instance of deviating from an accepted code of behavior.)

    Error表示系統級的錯誤和程序不必處理的異常,
    Exception表示需要捕捉或者需要程序進行處理的異常。

     

    簡要的敘述errorexception

    ErrorException都繼承自Throwable,他們下列不同處:

    Exceptions

    1.可以是 可被控制(checked) 不可控制的(unchecked)

    2.表示一個由程序員導致的錯誤

    3.應該在應用程序級被處理

    Errors

    1.總是 不可控制的(unchecked)

    2.經常用來用于表示系統錯誤或低層資源的錯誤

    3.如何可能的話,應該在系統級被捕捉

    re: 建 English 項目遇到的問題 BlueSunshine 2008-06-04 10:24  
    6 Spring 與 Hibernate 的集成

    在 beans.xml 加入: 
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
            
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
            
    <property name="username" value="yiqi" />
            
    <property name="password" value="haha" />
        
    </bean>
        
        
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
            
    <property name="dataSource" ref="myDataSource"></property>
            
    <property name="hibernateProperties">
                
    <props>
                    
    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                    
    <prop key="hbm2ddl.auto">create</prop>
                    
    <prop key="current_session_context_class">thread</prop>
                
    </props>
            
    </property>
            
    <property name="annotatedClasses">
                
    <list>
                    
    <value>com.english.user.EnglishUser</value>
                    
    <value>com.english.word.EnglishWord</value>
                
    </list>
            
    </property>
        
    </bean>
        
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            
    <property name="dataSource" ref="myDataSource"></property>
            
    <property name="sessionFactory" ref="sessionFactory"></property>
        
    </bean>
        
    <tx:annotation-driven/>
        
    <context:component-scan base-package="com.english.controller"></context:component-scan>


    行啊,文筆見長啊!
    怪不得這幾天下班回家就吵吵著吃晚飯,吃完了就在電腦前面發呆,瞅都不瞅我一眼,原來是等著盼著見C呀!
    c再好,能有我穩定?!天天雷打不動地伺候你老人家一日三餐(休息日減半)啊!
    re: [轉]開心星座 BlueSunshine 2007-08-08 14:45  
    好有意思,尤其是看到處女座的,(我老公的星座)笑得不行了!轉來了給愛上blogjava 的老公看看~~
    主站蜘蛛池模板: 亚洲熟妇无码AV在线播放| 巨胸喷奶水视频www网免费| 免费视频一区二区| 中文字幕高清免费不卡视频| 男男gay做爽爽免费视频| 日韩成人毛片高清视频免费看| 国产成人+综合亚洲+天堂| 真正全免费视频a毛片| 男女猛烈激情xx00免费视频| 青青青视频免费观看| 一个人看的www视频免费在线观看| 国产男女爽爽爽免费视频| 爽爽爽爽爽爽爽成人免费观看| 日韩精品无码免费专区午夜不卡| 永久在线观看免费视频| 四虎影视在线影院在线观看免费视频 | 99在线精品视频观看免费| 免费视频爱爱太爽了| 成年女人毛片免费视频| 日韩一品在线播放视频一品免费| 免费亚洲视频在线观看| 亚洲人午夜射精精品日韩| 国产亚洲一区二区在线观看| 亚洲一区二区影院| 亚洲黄页网在线观看| 国产亚洲成在线播放va| 国产一区二区三区免费| 69式互添免费视频| 国产成人aaa在线视频免费观看| www.亚洲精品| 久久精品亚洲视频| 国产91在线|亚洲| 免费国产a理论片| 久9这里精品免费视频| 最近2019中文字幕mv免费看| 国产一区在线观看免费| 亚洲成av人片在线观看无码不卡| 亚洲最大黄色网站| 日本精品久久久久久久久免费| 成全视频免费观看在线看| 美女视频黄的全免费视频网站|