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

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

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

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    1). Eclipse不能熱編譯:當不通過Eclipse顯示的部署(deploy),而通過在Tomcat 5.0\conf\Catalina\localhost下面編寫部署文件時,如 wmls.xml :??reloadable="false">
    如果替換了web應用程序的某個java文件,而此時Eclipse不會對此文件編譯,所以在啟動tomcat的時候會提示 ClassNotFoundException。

    解決方法:1. 顯示的更改對應的java文件,保存后Eclipse就會編譯。
    2.項目-重建工程

    2).使用Spring.jar工具包編寫一個簡單的Spring相關Demo
    1.編寫兩個(JavaBean)類UpperAction和LowerAction,它們都實現了一個接口Action。
    2.編寫bean.xml文件,它負責選擇JavaBean和配置javabean的屬性。
    3.編寫測試類Test.java,它根據bean.xml創建一個ApplicationContext實現,從ApplicationContext中獲得Action接口的實現。執行Action接口中定義的方法。
    ?Test.java中業務邏輯方法(Action接口中定義的方法)是在運行期間才確定的,是在bean.xml中進行配置的,不需要在Test.java的代碼中顯示的確定。這樣變降低了組件Test和Action實現類的耦合。

    ?存在的疑問:
    由于session是線程,所以每個Action的session不能相同。
    但是為什么session不能關閉呢??

    3)Jsp中parameter和attribute區別

    Attributes are objects associated with a request. Attributes may be set by the
    container to express information that otherwise could not be expressed via the API,or may be set by a servlet to communicate information to another servlet (via the RequestDispatcher).

    Request parameters for the servlet are the strings sent by the client to a servlet container as part of its request. the container populates the parameters from the URI query string and POST-ed data.The parameters are stored as a set of name-value pairs. Multiple parametervalues can exist for any given parameter name

    Attributes只能用在容器中,或者在容器之間傳遞,而 parameters是客戶端傳到服務器端的參數,可以在post和URL參數中。

    4).更新時應該根據對象的ID得到緩存在Session中引用。
    Session session = SessionFactory.currentSession();
    ?Demo info? =(Demo)session3.load(Demo.class,new Integer(addForm.getId()));
    info.setName(addForm.getName());
    session.update(info);
    不能直接 info.setID(addForm.getID()); 否則提示 重復ID錯誤。

    5).由于Tomcat沒將SQLServer Driver 下面的lib中的三個jar包不添加到工程中,所以提示 空指針 錯誤。
    ?java.lang.NullPointerException 。將JDBC 的三個jar包拷貝到\WEB-INF\lib 下面就可以了。?

    6).分析JSP頁面中URL的書寫問題:
    1:?? / 和 /? :都是相對當前目錄。
    2:?? 。。/??? :是回到當前目錄的上一層目錄
    3:?? 什么都不寫是相對tomcat的目錄:既是相對 http://localhost:8080/
    ?無論URL怎么寫,經過tomcat解釋后一定要是可以訪問到資源。?

    7).session.flush() 和transaction.commit()正常? session.Flush()并不是必須的,它的作用是將持久類的對象更改立刻提交到數據庫中 即使不顯式調用session.flush(),在transaction.Commit()之前,hibernate會自動調用flush()操作.但是如果在沒有使用Transaction的情況下執行持久化操作,沒有調用Flush就關閉session,當前session中的持久對象將不會持久化!(即:所做操作將不能反映到數據源的更改)
    ?? 執行持久化操作時,很多情況下,操作是被記錄下來,并不是立即提交到數據庫,直到session調用Flush時才真正提交。在SessionImpl.cs中,定義了三個ArrayList,分別是insertions、 deletions、updates,用于保存對應的持久化操作.例如在update()操作之后執行flush(),hibernate會檢查緩存中的持久類,如果發現有更新則會提交到數據庫,否則將不會提交.原因應該是為了避免頻繁的數據庫連接吧,畢竟數據庫連接是非常消耗資源的。
    ?對hibernate的事務處理有待進一步了解和掌握。?

    8). 關于PO,VO,DTO的思考??

    ?struts的ActionForm 類可以和 hibernate的POJO 重疊使用,只要在相應的struts-config.xml的 form-bean屬性 和..hmb.xml 的class屬性都設置為同一個POJO類就可以了。? POJO可以重用。

    對于上個Demo中 ActionForm 和 hibernate的 POJO重用問題,在非常簡單的應用中可以這么做,并可以節省一些內存。但是在業務邏輯變復雜時存在以下幾個缺點:
    1. ActionForm 的屬性 和 POJO 的屬性不一樣時,就重用不了。
    比如一個 Customer 包含 一個Adreess類的兩個對象 (家庭住址和公司 homeAdress 和 comAdress),此時ActionForm中的屬性比POJO的屬性多,所以不能重用。
    2.這樣加大了程序的耦合性,不論是上層組件修改,還是下層組件修改,都會影響到整個應用程序,從而增加修改的復雜性。
    3.位于Model層的PO(hibernate中的POJO,Entiry EJB),如果被傳遞到其他層面。由于PO的更新最終將被映射到實際數據庫中,而且具有生命周期,如果PO在其他層面(如View層)發生了變動,那么可能會對Model層造成意想不到的破壞。
    4.程序設計的一般原則是上層組件依賴下層,而下層不能依賴上層組件,既上層組件不要在下層組件中使用。因此View層的ActionForm也不能在持久層作為POJO使用。另一方面,表現層(ActionForm)VO直接反映的是表單數據,例如一個String格式的日期或者,前者需要轉化為Date類型而后者則在Business層用不到。

    結論:
    在處理一個case的時候就出現了3個ValueObject:
    : 一個是表現層的用于反映頁面數據。
    : 一個是Business層的,用于作為表現層和Business之間的DTO。
    :? 另一個是DAO持久層的,用于持久化的ValueObject。?
    ?DTO: Data Transfer Object
    VO : ValueObject
    PO : Persitence? Object

    9). ..hbm.xml文件: 既OR映射文件,書寫要遵循DTD規范,否則會提示錯誤,如 connect time out 等。

    10) tomcat啟動時提示:找不到 StandardContext.start() 行。 問題是 自己在程序中或者tomcat自己設置了一些斷點。 解決辦法: 調整Eclipse到Debug視圖,將斷點去掉即可。? tomcat啟動問題

    11).hibernate中的事務提交問題?? hibernate一般操作語句如下:
    Configuration conf= new Configuration().configure();
    SessionFactory sessions=conf.buildSessionFactory()
    Session session = sessions.openSession();??????
    Transaction t =? session.beginTransaction();
    session.save(info); //生成SQL語句
    t.commit();???????? //提交SQL語句

    ?session默認不提交事務。

    12).hibernate的配置文件hibernate.cfg.xml中關于??jdbc:microsoft:sqlserver://localhost:1433
    熟悉后面應該加上 DatabaseName= value? value代表數據庫名。? hibernate的配置文件??
    ?13).使用AarryList保存數據查詢出來的多條記錄。
    再將AarryList保存到session中,在JSP中邊可以使用session中的AayyList中保存的多條結果。在JSP中使用迭代器Iterator控制輸出多條記錄。? 使用AarryList 的add方法出現異常。 原因是add方法只增加對象的引用。所以造成多條相同的記錄。

    14).Web重定向: Redirect,HTTP協議中的重定向機制是客戶端讀取需要跳轉到的頁面的URL并重新加載新的頁面。forward()方法和sendRedirect()方法的區別是:前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用Request Dispatcher.forward()方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。

    15).1.Java與數據庫交互的具體過程
    ??? 1.裝入數據庫驅動程序 (JDBC 驅動程序或 JDBC-ODBC 橋) 。?
    ???? 2.創建數據庫的 Connection。?
    ???? 3.創建一個 Statement 對象。Statement 對象用于將 SQL 語句發送到數據庫中。.
    ???? 4.創建一個 ResultSet,然后用執行查詢的結果填充
    ???? 5.從 ResultSet 檢索或更新數據。
    2.連接到數據庫的兩種方法,比較有缺點
    3.PreparedStatement代替Statement 的優點
    ? 一.代碼的可讀性和可維護性.
    ? 二.PreparedStatement盡最大可能提高性能.
    ? 三.最重要的一點是極大地提高了安全性.
    4.Statement 接口三種執行 SQL 語句的方法
    5.ResultSet的使用
    15).tomcat有兩種啟動方式,一個用startup.bat,一個用tomcat5w.exe。
    當用這兩種不同的啟動方式,運行一個JSP文件(用到了tool.jar包)時,tomcat5w.exe啟動方式提示
    Unable to find a javac compiler;
    com.sun.tools.javac.Main is not on the classpath.
    Perhaps JAVA_HOME does not point to the JDK。

    ?原因:
    tomcat有兩種啟動方式,一個用startup.bat,一個用tomcat5w.exe。
    其中startup.bat使用的是按照系統里設置classpath,
    而tomcat5w.exe里面有一個專門設置classpath的地方,在設置的java選項中。

    所以解決方法有兩種:
    1.將用到的工具類包(如tools.jar)直接拷貝到tomcat的common/lib中。
    2.classpath中加入相應的工具類包(如tools.jar)。

    注:
    1.第一次提交JSP請求時,tomcat會編譯jsp文件,找到并裝入到相應的工具類(如tools.jar)。
    2.classpath設置只能用文件名,而不能用目錄。?

    16).用了package的時候顯示"NoClassDefFoundError",把package去掉的時候能正常運行。
     解決過程:將java文件按包名存放。
     工作目錄是/source,類是hello.HelloWorld,將它放為/source/hello/HelloWorld.java。如果沒有聲明包,直接放在/source下。
      在/source下執行javac hello/HelloWorld.java,再執行java hello.HelloWorld.java,一切正常。 注:感覺SUN的軟件缺乏用戶意識,在源文件中試用了package,在使用javac時卻不能自動生成一個包,要用戶自己建立文件夾,很是不方便。

    17)DispatchAction實現。
    DispatchAction通過配置文件(Struts-config.xml)中的parameter參數的值,調用參數值對應的方法,這樣便省去了載Action類中編寫大量的判斷代碼。涉及的技術有代理,反射。

    ?

    ?



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=810046

    posted on 2006-12-20 14:38 蘆葦 閱讀(419) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 77777午夜亚洲| 亚洲av成人一区二区三区| 国产午夜亚洲精品不卡| 免费观看的毛片手机视频| 亚洲无吗在线视频| 国语成本人片免费av无码| 亚洲人成www在线播放| 亚洲精品动漫免费二区| 亚洲熟妇丰满xxxxx| 国产免费观看a大片的网站| 免费人妻精品一区二区三区| 久久99亚洲综合精品首页| XXX2高清在线观看免费视频| 亚洲AV无码乱码在线观看裸奔| 久久成人免费大片| 亚洲精品美女在线观看播放| 成人免费777777| 国产成人亚洲综合a∨| 4338×亚洲全国最大色成网站| 国产啪精品视频网站免费尤物| 亚洲AV日韩AV高潮无码专区| 99久久这里只精品国产免费| 亚洲国产av玩弄放荡人妇| 亚洲国产a级视频| 玖玖在线免费视频| 狠狠色伊人亚洲综合网站色| 日本二区免费一片黄2019| 成在人线av无码免费高潮水| 久久亚洲sm情趣捆绑调教| 日韩电影免费在线| a级毛片毛片免费观看永久| 亚洲高清资源在线观看| 黄网址在线永久免费观看| 一二三区免费视频| 亚洲精品日韩专区silk| 国产成人高清精品免费鸭子| 久久青青草原国产精品免费| 亚洲av永久中文无码精品| 亚洲av中文无码乱人伦在线播放| 成人AV免费网址在线观看| www一区二区www免费|