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

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

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

    qqjianyue代碼工

    砌java代碼
    posts - 62, comments - 9, trackbacks - 0, articles - 10
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    適合入門級看,但其中的錯誤解決適合大家參考。
    在此使用MyEclipse6.0作為編程環境,真正領悟ssh后,就會知道MyEclipse添加spring與hibernate支持的用意只是讓MyEclipse自動添加spring與hibernate的包,還有產生一些配置文件代碼,在此為節省時間,使用MyEclipse來添加,但是其實自己添加也行。

    要填的東西將會指出,其他都是默認

    前提:

    數據庫建庫
    使用上面SQL語句在MySQL中建立表格,最好使用SQL yog Enterprise工具
    安裝MySQL與SQL yogEnterprise請自己掌握。

    1.創建工程:


    file-->web project(習慣使用,貌似dynamic web project也行)
     project name:ssh
    J2EE Specification Level選擇Java EE5.0(使用新一點的吧)

    finish->
    菜單Wiindows-->Open Perspective-->MyEclipse Java Enterprise 視圖

    2.添加Spring支持:


    工程名上右鍵-->MyEclipse-->Add Spring Capabilities
    a).在框內選上:
    Spring2.0 AOP Libraries(對于面向切面有用,后面會用到配置面向切面的)
    Spring2.0 Core Libraries(Spring核心庫)
    Spring2.0 Persistence Core Libraries(持久層庫,要Spring與Hibernate集成,當然就添加啦)
    Spring2.0 J2EE Library
    Spring2.0 Web Libraries
    暫時就只添加這5個
    Copy checked Library contents to project folder 選上,這樣就可以將庫添加到工程內,否則這個工程編譯的時候會引用本機的文件系統內的庫,工程轉移到其它機器就需要重新將每個包改對路徑,當然如果只需要本機開發的就不用copy啦。
    next->
    b).new applicationContext.xml 將路徑改為在WebRoot/WEB-INF下面,其實放在src下也行,但是工程編譯的時候將src下的東西編譯到WebRoot/WEB-INF下的classes目錄下,配置applicationContext路徑的時候就相應修改就行。
    finish->

    3.建立數據庫連接


    菜單Wiindows-->Open Perspective-->MyEclipse Database Explorer
    DB Browser中右鍵-->new,新建一個數據庫連接,打開一個對話框
    Driver template 選擇MySQL connector/J(可以不選,選著只是為了下面顯示出連接字符串的模板,讓不熟悉的人可以照這模式來填)
    Driver name:任意,用于標識這個連接,對我們工程沒有任何關系的。
    Connection URL:jdbc:mysql://localhost:3306/ssh (意思是本地地址IP的數據庫ssh,如果是遠程數據庫,請寫遠程地址,當然要確保遠程地址是可達的,例如防火墻阻隔等)
    User name:你的數據庫登錄名
    password:登錄名密碼
    Add Jars-->打開對話框尋找本地文件系統的MySQL連接驅動包,(提供下載/Files/jianyue/mysqlConnector.rar,解壓取里面那個jar)
    save password 打上鉤,方便點
    可以test 測試一下是否能夠連接

    這步驟的實際意義是在MyEclipse IDE工具上建立一個數據庫連接,來管理,對于我們工程其實沒有一點影響的,只是這個連接,以后引用或者管理的時候就較方便。
    finish-->

    4.添加Hibernate支持


    切換回原來的視圖,其實有多種切換視圖的方法,快捷鍵等,自己學吧。
    a).工程名上右鍵-->MyEclipse-->add Hibernate Capabilities
    同樣Copy checked Library Jars to project folder and add to build-path

    next-->
    b).選擇Spring configuration file
    next->
    c).因為原來已經有一個spring配置文件,所以就選擇Existing Spring configuration file
    sessionFactory ID:sessionFactory(可以自定義名稱,使用慣例的吧,隨便啦)
    next-->
    d).DB Driver  選擇在MyEclipse DB Explorer中建立的數據庫連接名稱(這里就體現到同一個IDE工具的好處,方便地引用那個連接的配置)
    Bean ID:dataSource(又是慣例的名稱)
    next-->
    取消掉create SessionFactory class
    finish-->

    5.添加Struts2.0支持


    由于MyEclipse沒有集成Struts2.0的包,所以自己添加Struts的五個包


    由于空間有限,可以上網搜索一個叫struts2-blank的工程包,war文件也可以,可以用rar打開,取其里面lib下的這五個包
    struts暫且只添加這5個包,多包反而會導致沖突(后面有說),至于struts想集成meshsite等的話,就另外加包吧。

    順便將原來的那個mysqlConnector的jar包也拿來吧,一起拖到WEB-INF/lib目錄下,可以直接拖到IDE工具上的工程瀏覽框(即Package視圖)的lib圖標上,MyEclipse支持拖放功能。
    還有commons-pool-1.4.jar和commons-dbcp-1.2.2.jar和struts2-spring-plugin-2.0.6.jar也是必須自己加進lib中的
    如果有包重復的話,覆蓋就行。

    6.配置文件web.xml詳解


    web.xml

    struts的過濾器配置是有順序的:
    按照Struts2的API,filter的順序是
    struts-cleanup filter
    SiteMesh filter
    FilterDispatcher
    如果需要配置字符轉換過濾器的話,那就安排在FilterDispatcher之前

    spring配置文件可以多個,從/WEB-INF/applicationContext*.xml的通配符就可以看出來了

    7.struts.xml詳解


    在src下建立一個struts.xml的文件:
    struts.xml


    8.applicationContext.xml詳解


    applicationContext.xml

    applicationContextUser.xml

    9.構造pojo與dao


    先建好包結構如下:

    a).切換到MyEclipse DB Explorer視圖->雙擊你建的那個連接來打開數據庫連接->Table下user表右鍵->Hibernate Reverse Engineering->

    ->finish:這樣會產生三個文件,數據庫user映射的pojo實體類對象User.java,數據庫訪問對象UserDAO.java,數據庫映射文件User.hbm.xml
    將User.java 與 hbm文件移到pojo包下
    上面搞錯了點,將UserDAO移到dao.hibernate包下吧
    這里的東西涉及到applicationContext.xml的改變,沒有關系,前面已經詳盡講解了各xml文件的意義。
    UserDAO已經自動生成很多數據庫訪問函數,從字面上可以看出是什么意思,大部分函數是不一定用到的,自己想使用的方法寫在下面說的接口上,再實現他吧。
    我們為其寫個UserDAO接口,在dao包下編寫一個IUserDAO.java的接口,并且使UserDAO實現這個接口

    10.編寫服務


    參照代碼吧!

    11.編寫action




    12.編寫頁面


    final我遇到的異常
    appllicationConotext.xml中的org.apache.commons.dbcp.BasicDataSource not found錯誤,可能是沒有添加commons-pool.jar和commons-dbcp.jar和commons-collections.jar

    Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: entity class not found: ssh.dao.User
    因為自己在移動產生的User.java類的時候,忘記修改User.hbm.xml文件的映射實體類,需要改成
     <class name="ssh.pojo.User" table="user" catalog="ssh">

    Action class [loginAction] not found - action - file:/D:/workspace2/.metadata/.plugins/com.genuitec.eclipse.easie.tomcat.myeclipse/tomcat/webapps/ssh/WEB-INF/classes/struts.xml
    因為login action的class我指定為loginAction,所以在spring中的login Bean的id="loginAction"來對應,但是我卻寫成了login,所以找不到。

    org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: model near line 1, column 56 [from ssh.pojo.User as model where model.name= adminand model.password= admin]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: model near line 1, column 56 [from ssh.pojo.User as model where model.name= adminand model.password= admin]
    可以從from字符串中看出,我忘記寫空格了。

    javax.servlet.ServletException: org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create PoolableConnectionFactory (Unknown database 'ssh1'); nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Unknown database 'ssh1')
    因為spring中的dataSource的  <property name="url" value="jdbc:mysql://localhost:3306/ssh"></property>,我原來指定了ssh1的數據庫,我并沒有創建這個數據,所以改回ssh

    javax.servlet.ServletException: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
    這個是因為我忘記把sql字符串中的值用''括起來,例如:
    from ssh.pojo.User as model where model.name = admin and model.password = admin
    應該要變成:
    from ssh.pojo.User as model where model.name = 'admin' and model.password = 'admin'
    自己改UserDAO中的字符串吧。

    No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath:....
    如果有這個問題的話,那就參看:http://www.tkk7.com/jianyue/archive/2008/08/28/225415.html

    java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
    java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
    java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
    CGLIB Enhancement failed
    主要是hibernate與spring包沖突問題,可能有多種情況,都參照一下吧,但是最關鍵的原則是一個同樣功能的包,
    不要將多個版本都放進來。根據這個原則,自己也能夠知道應該刪去什么包。
    解決方案:參看:http://www.tkk7.com/jianyue/archive/2008/08/28/225246.html

    No configuration found for the specified action:  in namespace:
    那么一定是action配置得不對,不是包的問題,自己詳細參照一下我的那份action配置說明。


    代碼工程/Files/jianyue/ssh.rar

    由于空間有限,去掉了包。包的列表如下:


    使用QQ中轉站的工程資料:http://xianexs.mail.qq.com/cgi-bin/downloadfilepart/svrid264/ssh.rar?svrid=264&fid=43c7ea2ec48f0ab1df6cf19be93fd207f24f786949adb4ba&&txf_fid=64f2ea7b5eab7021495c997ac5512b1e1556cd97&&txf_sid=aaf1d1ab2dd1c1b7301c3909f4df304167a7e99e有時間限制,盡快下。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品国产第1页| 亚洲欧美日韩国产成人| 国产卡一卡二卡三免费入口| 亚洲精品无码av片| 国产亚洲综合一区柠檬导航| 国内免费高清在线观看| 岛国精品一区免费视频在线观看 | 亚洲日韩中文字幕天堂不卡| 成人黄动漫画免费网站视频| 一区二区免费电影| 亚洲区视频在线观看| 亚洲精品国产va在线观看蜜芽| 亚洲毛片免费观看| 一个人免费观看日本www视频| 亚洲成在人线电影天堂色| 国产偷国产偷亚洲高清日韩| 最近最新中文字幕完整版免费高清| 国产特黄特色的大片观看免费视频 | 亚洲乱码日产精品a级毛片久久| 最近中文字幕无免费| 一级a性色生活片久久无少妇一级婬片免费放 | 免费人成视频在线播放| 亚洲国产高清在线精品一区| 国产精品亚洲w码日韩中文| 在线观看免费人成视频| 99久久国产精品免费一区二区| 亚洲av无码一区二区三区四区| 亚洲电影在线播放| 国产国拍亚洲精品福利| 成人性生交视频免费观看| 99在线观看视频免费| 国产成人无码免费看片软件| 亚洲一区二区三区丝袜| 亚洲第一福利视频| 亚洲一级特黄大片无码毛片| 成人av免费电影| 美女被免费喷白浆视频| 久久久久成人精品免费播放动漫| 黄色一级免费网站| 色欲色欲天天天www亚洲伊| 色在线亚洲视频www|